gpt4 book ai didi

mysql - 如果我为已经在覆盖索引中建立索引的单个字段创建单独的索引,我会观察到性能提升吗?

转载 作者:行者123 更新时间:2023-11-29 00:37:25 25 4
gpt4 key购买 nike

我有一个覆盖索引,它按顺序包含字段 a bc

ALTER TABLE table ADD INDEX covering(a, b, c)

以下查询使用覆盖索引,更具体地说,只是覆盖索引中的第一个字段。

SELECT * FROM table
GROUP BY a

如果我创建另一个专门包含 a 的索引,我会观察到性能提升吗?

ALTER TABLE table ADD INDEX a(a)

或者上述索引的工作方式是否与 SELECT 语句中的覆盖索引完全相同?

如果我的查询是 GROUP 在覆盖索引中不是第一个序列的字段上怎么办?

SELECT * FROM table
GROUP BY b

我的索引是

ALTER TABLE table ADD INDEX b(b)

最佳答案

如果您在 (a, b, c) 上有复合索引并使用 ORDER BY a,那么它将起作用并利用该索引。仅在 (a) 上添加索引将使它比查询计划器更可取,但它会很浪费,因为您必须在索引中保留更多数据,并且在更新表时还要更新两个索引。使用较窄的索引会带来很小的好处,但可能很难量化这种优势。

对于使用ORDER BY b查询,不能使用上面的任何索引,必须在(b)上创建索引或者在上创建复合索引>(b, ...) 以获得合理的性能。

关于mysql - 如果我为已经在覆盖索引中建立索引的单个字段创建单独的索引,我会观察到性能提升吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13677401/

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