如何强制视图使用特定索引?
当我尝试强制使用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_ValueDate
是BANK.CUSTOMER_ORDER_VIEW
中使用的表的索引。
答案 0 :(得分:0)
编写提示时需要注意的事项:查询/表提示仅用于推荐,优化程序可能会视您的情况而忽略它们。 例如,某处but mentioned的记录不充分
在事实上使用引用多个索引的索引提示时 星型联接中的表,优化器将忽略索引提示并返回 警告消息。
另一方面,您的查询是一个典型示例,其中由于声明了变量而需要OPTION(RECOMPILE)
:一旦在狭窄时期生成并缓存计划,就不适合大时期等等。