請在我身上輕鬆一下,因爲這是我的第一篇文章。INFORMATION_SCHEMA查詢運行緩慢
我無法弄清楚在我們的INFORMATION_SCHEMA上運行如此慢的問題將會解決以下問題。據我所知,這些觀點非常好。這在SQL Server 2014 Standard上。
最近,我們還原了使用此查詢的數據庫。該數據庫是生產數據庫的測試版本。在恢復之前,這個查詢在幾秒或更少的時間內運行,但現在需要3到5分鐘才能返回36行。該查詢運行速度明顯快於最後一行註釋,大約4秒左右,返回60行。
有沒有人有什麼想法做什麼使這個又快又快?
可能會回答幾個問題的其他詳細信息:查詢在生產數據庫中也需要這麼長時間。這些視圖沒有任何索引。
SELECT pf.TABLE_CATALOG AS PK_TABLE_DATABASE,
pf.TABLE_SCHEMA AS PK_SCHEMA_NAME,
pf.TABLE_NAME AS PK_TABLE_NAME,
pf.COLUMN_NAME AS PK_FIELD_NAME,
ff.TABLE_CATALOG AS FK_TABLE_DATABASE,
ff.TABLE_SCHEMA AS FK_SCHEMA_NAME,
ff.TABLE_NAME AS FK_TABLE_NAME,
ff.COLUMN_NAME AS FK_FIELD_NAME,
pf.ORDINAL_POSITION AS ORDINAL
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ff
ON rc.CONSTRAINT_NAME = ff.CONSTRAINT_NAME
AND rc.CONSTRAINT_SCHEMA = ff.CONSTRAINT_SCHEMA
AND rc.CONSTRAINT_CATALOG = ff.CONSTRAINT_CATALOG
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE pf
ON rc.UNIQUE_CONSTRAINT_NAME = pf.CONSTRAINT_NAME
AND rc.UNIQUE_CONSTRAINT_SCHEMA = pf.CONSTRAINT_SCHEMA
AND rc.UNIQUE_CONSTRAINT_CATALOG = pf.CONSTRAINT_CATALOG
AND ff.ORDINAL_POSITION = pf.ORDINAL_POSITION --line in question
謝謝你的時間。
我必須失去了一些東西 - 爲什麼加入'JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE'兩次?我沒有看到任何區別他們的東西。 –
獲取組合中PK和FK的表格和字段信息。 – dgoodman