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

时间:2013-05-23 03:51:47

标签: sql sql-server-2008 indexing query-optimization query-hints

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

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遵守索引提示而不使用其他提示吗?

1 个答案:

答案 0 :(得分:6)

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

WITH (FORCESEEK, INDEX (IndexName),NOEXPAND)

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