gpt4 book ai didi

sql - 4 列复合索引是否有益于 3 列查询?

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:08 25 4
gpt4 key购买 nike

我有一个包含列 A、B、C、D、E、...、N 的表格。使用 PK(A)。我还为 DCBA 列定义了一个复合的、唯一的、非聚集索引, 按此顺序。

如果我使用如下查询:

where D = 'a' and C = 'b' and B = 'c'

如果没有 A 的子句,我还能享受索引的好处吗?

最佳答案

是的,对于这些查询,SQL 服务器可以对索引 (D, C, B, A) 执行查找操作:

WHERE D = 'd'
WHERE D = 'd' AND C = 'c'
WHERE D = 'd' AND C = 'c' AND B = 'b'
WHERE D = 'd' AND C = 'c' AND B = 'b' AND A = 'a'

它可以对这些索引执行扫描操作:

WHERE C = 'c' AND B = 'b'
WHERE A = 'a'
-- etc

但是还有一件事需要考虑:索引中列的顺序很重要。两个索引 (D, C, B, A)(B, C, D, A) 的表现可能不同。考虑以下示例:

WHERE Active = 1 AND Type = 2 AND Date = '2019-09-10'

假设数据包含两个不同的 Active 值,10 个 Type 和 1000 个 Date,(Date, Type, Active, Other) 的索引将比 (事件、类型、日期、其他)

您还可以考虑为不同的查询创建上述索引的不同变体。

PS:如果列 A 没有在 WHERE 子句中使用,那么你可以简单地 INCLUDE

关于sql - 4 列复合索引是否有益于 3 列查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52262208/

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