尽管有索引,查询也需要很长时间

时间:2018-04-26 07:51:05

标签: sql-server database sql-server-2008

SELECT id,
    file_name As 'Document',
    ref_number AS 'Ref Number',
    entered_by As 'Entered By',
    created_date As 'Created Date',
    manpower,
    user_path,
    owner_path
FROM t_document_holder
WHERE 1 = 1
    AND incoming_to = 'Criteria'
    AND incoming_from = 'Criteria'
    AND CONTAINS (
        user_path,
        'Criteria'
        )
ORDER BY created_date,
    entered_by

索引:

  

id = Clustered Index
  ref_number =非聚集的   entered_by =非聚集索引
  manpower =非聚集指数
  user_path和owner_path =全文搜索索引
  incoming_to和incoming_from =非聚集索引

总而言之,大多数列(都在WHERE条件中)是索引的一部分,但是这个查询仍需要25秒才能返回表中总共115,000行中的527行。

执行计划Query Execution Plan

有人可以建议为什么要花这么长时间才能返回这些行。

查询非聚集索引的执行计划

enter image description here

1 个答案:

答案 0 :(得分:1)

经过几小时的谷歌搜索,我找到了解决方案。解决方案是重建这个特定表上的所有索引,它就像魅力一样。有关详细信息,请参阅此文章。

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/044316b5-32d7-4264-bde4-1ebfb5633262/order-by-extremely-slow-in-sql-2008-r2?forum=transactsql