涉及外键的WHERE子句的某些值很慢

时间:2012-07-18 19:51:46

标签: performance sql-server-2008 indexing foreign-keys rebuild

此查询有效:

SELECT [ID]
  ,[PROJECT_ID]
  ,[NAME]
  ,[LOCATION]
  ,[COMMENT]
FROM table1
WHERE PROJECT_ID = 4479

但是这个没有:

SELECT [ID]
  ,[PROJECT_ID]
  ,[NAME]
  ,[LOCATION]
  ,[COMMENT]
FROM table1
WHERE PROJECT_ID = 3560

它无限旋转和旋转。唯一的区别是使用的值。

" PROJECT_ID"是一个外键,并且有一个索引定义为它作为唯一列(通常使用FK)。

并行:此表上的FK索引存在高度碎片。

这些可能是相关的,即,如果我重建索引,我应该预期问题会得到解决吗?

我现在无法重建它们,因为它是一个生产系统,我的理解是我只能在可以获得锁定时重建索引...例如今晚晚些时候。

关于如何强制重建数据库中所有表中所有索引的任何指导,即使它断开了用户的连接"也很感激。

谢谢, - 杰西

1 个答案:

答案 0 :(得分:2)

这些查询是否封装在存储过程中?如果是这样,您可能会受到参数嗅探的影响。

您也可以查看统计数据;如果它们已经过时,你可能会得到一个非常差的执行计划,其中包含某些参数,而不是其他参数。