如何强制视图使用特定索引?

时间:2018-10-25 12:17:44

标签: sql sql-server tsql sql-server-2014

如何强制视图使用特定索引?

当我尝试强制使用index时,我收到以下警告消息:

  

警告:为视图“ BANK.CUSTOMER_ORDER_VIEW”提供的索引提示将被忽略。

下面是我的查询:

DECLARE  @VALUE_DATE_START DATE = '20181001',
         @VALUE_DATE_END DATE  = '20181025'

SELECT * 
FROM BANK.CUSTOMER_ORDER_VIEW WITH(INDEX(IX_ValueDate))
WHERE VALUE_DATE BETWEEN @VALUE_DATE_START AND @VALUE_DATE_END

IX_ValueDateBANK.CUSTOMER_ORDER_VIEW中使用的表的索引。

1 个答案:

答案 0 :(得分:0)

编写提示时需要注意的事项:查询/表提示仅用于推荐,优化程序可能会视您的情况而忽略它们。 例如,某处but mentioned的记录不充分

  

在事实上使用引用多个索引的索引提示时   星型联接中的表,优化器将忽略索引提示并返回   警告消息。

另一方面,您的查询是一个典型示例,其中由于声明了变量而需要OPTION(RECOMPILE):一旦在狭窄时期生成并缓存计划,就不适合大时期等等。