gpt4 book ai didi

sql - 多列索引效率

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

select a
from t
where b = 1 and c = 2
  1. 要提高此查询的性能,我应该创建 index (b, c)index(c, b) 还是第一个索引就足够了?<
  2. 据我了解,index (b, c, a) 可能会进一步提高性能,但前提是 (b, c, a)(b, c)。那是对的吗?
  3. SQL 问题是否属于 dba.stackexchange 站点?

最佳答案

1.To improve the performance of this query, should I create index (b, c) and index(c, b) or is the first index sufficient?

您不需要创建两个索引。两者中的任何一个,如果用于执行查询,都可以同样提高此类查询的效率(具有 where b = 1 and c = 2 条件)。是否使用,是否提高性能,取决于索引的选择性。

2.From what I understand, index (b, c, a) might improve performance further, but only if (b, c, a) is MORE unique than (b, c). Is that correct?

是的。 (b , c, a) 上的索引(或同样适用于 (c, b, a) 的索引)将提高性能。与选择性无关。读取索引(以及所有索引中的相同位置)不会比从 ((b, c) 索引读取然后从中获取 a 列数据更糟糕从(可能更宽的)表格中这里一行,那里一行。

(b, c) 的选择性,例如查询返回多少行,会影响效率的提高多少,(b, c, a) 索引会给你。如果查询返回几十行,差异会很小。如果查询在数百万个表中返回数千行,则改进会很大,因为所有数据都将从(覆盖)索引中读取。

3.Do SQL questions belong to dba.stackexchange site?

这是元站点的问题,无论是主要站点还是 DBA.SE 元站点。

关于sql - 多列索引效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14842415/

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