为什么SQL会忽略索引提示并选择其他索引?

Mid*_*one 3 sql indexing query-optimization query-hints sql-server-2008

给定一个表上有两个索引,一个表从另一个表中反向排序并给出这两个查询.

Select value From SomeTable wITH (INDEX(IV_Sort_Asc))
Select value From SomeTable wITH (INDEX(IV_Sort_Desc))
Run Code Online (Sandbox Code Playgroud)

我在SQL Server 2008中遇到了一个忽略提示的案例,在这两种情况下IV_Sort_Desc都使用索引而不是第一个.

我意识到很多人会立即建议不提供提示,但鉴于我的具体情况,这不是一个选择.

什么会导致这种情况,我该怎么做才能解决它?当然你会期望SQL Server尊重索引提示而不是使用不同的索引提示?

Roe*_*and 8

当我希望SQL在视图上使用索引时遇到了同样的问题.我原来我必须使用NOEXPAND选项:

WITH (FORCESEEK, INDEX (IndexName),NOEXPAND)
Run Code Online (Sandbox Code Playgroud)

https://technet.microsoft.com/en-us/library/bb510478%28v=sql.105%29.aspx