【发布时间】:2018-05-15 11:25:48
【问题描述】:
我有一个巨大的表(它有超过 4000 万条记录)和一个列上的索引。该列是一个参考列 - typeId。
我遇到了一个问题,即在使用不同的列值过滤该列上的数据时,有时会使用索引,有时不会使用索引。
例如。简单地运行:
select * from LargeNumberOfItemsTable where typeid=4
让 SQL Server 使用索引,但是
select * from LargeNumberOfItemsTable where typeid=3
不使用索引。
当不使用索引时,查询需要很长时间,但是当我强制提示应该使用索引时,运行它只需几秒钟。
奇怪的是统计已经更新,索引已经重建。
有谁知道为什么会发生这种行为?我正在寻找一些提示,在哪里寻找原因。
【问题讨论】:
-
您更新了统计数据吗?
-
是的,统计信息已更新。
-
包含两个查询的实际执行计划,使用此链接 (brentozar.com/pastetheplan) 并包含在问题中
-
可以分享一下执行计划吗?
-
使用“MAXDOP 1”选项重建解决了问题
标签: sql-server performance database-indexes