gpt4 book ai didi

mysql - InnoDB 复合索引顺序和 INSERT 性能

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

我有一个包含 3 列的 MySQL 表,我想在上面使用多列索引。 A 列是 TINYINT,B 是 SMALLINT,C 是 VARBINARY (16)。我应该使用索引作为 A、B、C,因为 A 的粒度比 B 低,B 比 C 低,以实现最大的 INSERT 速度?

最佳答案

(注意:这个答案澄清或不同意已经写的一些评论。)

DELETE 由于删除索引条目而变慢。 UPDATEs 可能会变慢 -- 这取决于索引列是否更改。

SELECTsUPDATEsDELETEs,但不是 INSERTs,需要找到行;为此,索引可能会有很大帮助。

如果要检查UNIQUE 索引,则INSERT 会受到额外的伤害。

二级键(在 InnoDB 中)除了 UNIQUE 键,被更新(通常是由于 INSERTDELETE,但可能是由于 UPDATE) 通过所谓的“更改缓冲区”以“延迟”方式进行。这有效地推迟了更新索引,但仍然保持索引完全可用。

这些都不受索引中列顺序的影响。但是,如果索引大于 RAM 中的缓存容量,“缓存”就会发挥作用,并且可能会或可能不会涉及 I/O。但那是另一个话题。

一般来说,索引对读取的好处远远超过写入操作的减速。

关于mysql - InnoDB 复合索引顺序和 INSERT 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38268050/

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