2017-09-02 5 views
0

次のクエリはうまく動作しています。結果を返すのに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' 

答えて

3

私はあなたのクエリは時間がかかるだろう驚いていますが、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

関連する問題