gpt4 book ai didi

sql - 我应该将选择中的所有列包含在索引中吗?

转载 作者:行者123 更新时间:2023-12-03 03:45:05 25 4
gpt4 key购买 nike

我有一个查询需要一些时间才能运行,它看起来像这样。

Select a.ColumnA,a.ColumnB,a.ColumnC,a.CoulmnD,a.columnE,...b.ColumnH
from Table A a
inner join Table B b
on a.columnB = b.ColumnB
Where a.columnA = @VariableA

现在表 A 上有一个聚集索引,如下所示

Clustered Index on ColumnA

它在表 A 上还有一个非聚集索引,如下所示

NonClustered Index on (ColumnA,ColumnB) include (ColumnC,ColumnD)

我是否也应该将 ColumnsE-G 添加到索引中?

最佳答案

Verify the data type of compared columns and parameters are the same when you see an index scan instead of the expected seek in the execution plan.

当数据类型不同时,SQL Server 必须首先将优先级较低的操作数转换为优先级较高的数据类型(例如,将 varchar 转换为 nvarchar)。当必须转换的是列值时,转换会妨碍列上索引的有效使用,因为在进行比较之前必须转换每行的列值。这称为不可控制的表达式,并且阻止更有效的索引查找

关于sql - 我应该将选择中的所有列包含在索引中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29860292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com