为什么SQL忽略索引提示并选择不同的索引?



给定一个表,上面有两个索引,一个与另一个反向排序,并给定这两个查询。

Select value From SomeTable wITH (INDEX(IV_Sort_Asc))
Select value From SomeTable wITH (INDEX(IV_Sort_Desc))

我在SQL Server 2008中遇到了一个例子,其中提示被忽略,并且在这两种情况下都使用IV_Sort_Desc索引而不是第一个。

我知道很多人会立即建议不要提供提示,但是考虑到我的具体情况,这不是一个选择。

什么会导致这个问题,我能做些什么来解决它?当然,您希望SQL Server尊重索引提示,而不是使用不同的索引提示?

当我想让SQL在视图上使用索引时,我遇到了同样的问题。结果我不得不使用NOEXPAND选项:

WITH (FORCESEEK, INDEX (IndexName),NOEXPAND)
https://technet.microsoft.com/en-us/library/bb510478%28v=sql.105%29.aspx

最新更新