更好的方法,而不是使用INFORMATION_SCHEMA.TABLE_CONSTRAINTS

问题描述:

我有以下查询哪些工作正常,并给我我后来的结果。它需要3秒钟才能返回结果,但我发现速度太慢。更好的方法,而不是使用INFORMATION_SCHEMA.TABLE_CONSTRAINTS

任何人都知道更好的方法?

SELECT 
    @PrimaryKey = ccu.Column_Name 
FROM 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc 
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu on 
    tc.CONSTRAINT_NAME = ccu.Constraint_name 
WHERE 
    tc.CONSTRAINT_TYPE = 'Primary Key' and 
    tc.Table_Name = @TableName 
    --tc.Table_Schema = 'LookUp' 

我很惊讶,你的查询将需要很长时间,但你可以通过SQL Server目录视图相同的信息:

SELECT c.name 
FROM sys.indexes AS i 
JOIN sys.index_columns AS ic ON ic.object_id = i.object_id AND ic.index_id = i.index_id 
JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id 
WHERE 
    i.is_primary_key = 1 
    AND i.object_id = OBJECT_ID(N'dbo.YourTable', 'U'); 
+0

作为后续行动,这里的一对之间的权衡好文章'information_schema'和系统视图:http://sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/the-case-against-information-schema-views.aspx – Xedni

+0

谢谢你们。 – Philip