【发布时间】:2013-05-18 07:23:51
【问题描述】:
给定一个表,上面有两个索引,一个与另一个反向排序并给出这两个查询。
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 遵守索引提示而不使用其他提示吗?
【问题讨论】:
-
那么我该如何强制它使用特定的索引呢?我在寻找命令,而不是提示。
-
我有非常大的索引视图,我正在使用索引,因为它是预先排序的。如果我在 10+ 百万行上运行排序命令,我会坐在这里很长时间。通过仔细构建查询并使用正确的索引,它几乎可以立即返回结果,问题是在这种特殊情况下(索引视图上的索引)它不再尊重我提供的参数。
-
查看文档,我的猜测会是 SQL Server 无法使用该索引提出有效的执行计划。是否返回任何警告?
-
不,我检查了查询计划。最后我恢复到一个单一的索引,服务器正确地选择了它。我还是有点疑惑。
标签: sql sql-server-2008 indexing query-optimization query-hints