VARCHAR 缺失索引未显示在缺失索引 dmv 或查询计划建议中

Jie*_*ong 3 index sql-server sql-server-2017

我有一个包含 307200 条记录的表,其中 f_column 为 VARCHAR(30)。缺失索引 dmv 中不会显示缺失索引,也不会在执行计划中建议缺失索引。

SELECT f_column, f_column2 FROM t_table WHERE f_column = '23BE46F3-E9A9-4526-A2F8-3F51818025B5'
Run Code Online (Sandbox Code Playgroud)

该查询返回 5 个结果,花费了 9958 次逻辑读取。对于下面的索引,需要 3 次逻辑读取。

CREATE NONCLUSTERED INDEX IX_t_Table_f_column ON t_table (f_column) INCLUDE (f_column2)
Run Code Online (Sandbox Code Playgroud)

当添加索引会给查询带来巨大好处时,什么可能导致缺失索引不会出现在缺失索引 dmv 和执行计划中?

我最初怀疑统计数据,并更新了表的所有统计数据,但问题仍然存在。由于某种原因,添加或更改表上的列将导致 SQLServer 恢复正常,并且缺失的索引会出现在缺失索引 dmv 中以及查询下次执行的执行计划中。

Ste*_*o64 5

几乎可以肯定,因为它被视为一个微不足道的计划,并且这些计划不会激活缺失的索引功能,所以 Darling 先生在此博客中提供了一个解决方法

\n

https://www.erikdarlingdata.com/sql-server/whats-the-point-of-1-select-1/

\n