一尘不染

如何强制查询不使用给定表上的索引?

sql

我目前正在做一些测试,以确定在SQL Server 2005中给定列上包含索引的性能影响。

我正在使用的测试数据集大约有7200万行(大约6 GB的数据)。为了实际 测试 索引的性能,我需要能够比较有和没有索引的性能。

一切都很好,但是首先创建索引并不便宜。如果要在没有索引的情况下测试表,则至少需要禁用索引。要测试索引,我需要重新启用它,这需要花费很长时间。

有什么方法可以强制SQL Server 2005在执行查询时忽略给定的索引?我不想只为了测试查询就禁用索引,因为禁用索引需要花费很长时间。


阅读 146

收藏
2021-03-17

共1个答案

一尘不染

SELECT *
FROM MyTable WITH (INDEX(0))
WHERE MyIndexedColumn = 0

查询通常将使用MyIndexedColumn上的索引,但是由于有表提示,它将改为进行tablescan。


SELECT *
FROM MyTable WITH (INDEX(IndexName))
WHERE MyIndexedColumn = 0

查询通常将使用MyIndexedColumn上的索引,但是由于有表提示,它将改为使用名为IndexName的索引。

2021-03-17