Sql 信息\u架构查询运行缓慢

Sql 信息\u架构查询运行缓慢,sql,sql-server,information-schema,Sql,Sql Server,Information Schema,请对我放松点,因为这是我的第一篇文章 我很难弄清楚是什么解决了以下关于我们的信息模式的查询运行如此缓慢的问题。据我所知,这些观点被很好地锁定了。这是基于SQL Server 2014标准的 最近,我们恢复了使用此查询的数据库。此数据库是生产数据库的测试版本。在进行恢复之前,此查询只需几秒钟或更短的时间即可运行,但现在返回36行需要3-5分钟以上的时间。当最后一行被注释掉时,这个查询运行得更快,大约4秒,返回60行 有没有人知道该怎么做才能让这个速度再快一点 其他细节可能会回答更多的问题:查询也会

请对我放松点,因为这是我的第一篇文章

我很难弄清楚是什么解决了以下关于我们的信息模式的查询运行如此缓慢的问题。据我所知,这些观点被很好地锁定了。这是基于SQL Server 2014标准的

最近,我们恢复了使用此查询的数据库。此数据库是生产数据库的测试版本。在进行恢复之前,此查询只需几秒钟或更短的时间即可运行,但现在返回36行需要3-5分钟以上的时间。当最后一行被注释掉时,这个查询运行得更快,大约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 

谢谢你抽出时间

我会按以下顺序尝试: 1) 更新统计数据 2) 重建索引 3) 确认机器中的可用存储器没有压力。 4) 检查某种类型的活动或锁(sp_lock)

试试这个

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.KEY_COLUMN_USAGE ff
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE pf 
ON ff.ORDINAL_POSITION = pf.ORDINAL_POSITION --line in question 
where exists
(
select 1 
from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
where rc.CONSTRAINT_NAME = ff.CONSTRAINT_NAME
    AND rc.CONSTRAINT_SCHEMA = ff.CONSTRAINT_SCHEMA
    AND rc.CONSTRAINT_CATALOG = ff.CONSTRAINT_CATALOG
    and rc.UNIQUE_CONSTRAINT_NAME = pf.CONSTRAINT_NAME
    AND rc.UNIQUE_CONSTRAINT_SCHEMA = pf.CONSTRAINT_SCHEMA
    AND rc.UNIQUE_CONSTRAINT_CATALOG = pf.CONSTRAINT_CATALOG
)

我不需要这些视图的索引来更新它们的统计数据吗?我也无法在该视图中看到这些信息来自何处。我需要这里的“nolock”线索-我被困在一个运行链接服务器导入的作业后面。我一定错过了什么-为什么要加入
加入信息\u架构。键列\u用法
两次?我看不出有什么区别。要获得组合中PK和FK的表和字段信息。嘿,KumarHarsh,这个查询也需要一段时间。与原始查询大致相同。