首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InnoDB复合索引顺序和插入性能

问InnoDB复合索引顺序和插入性能
EN

Stack Overflow用户
提问于 2016-07-08 21:34:50
回答 2查看 329关注 0票数 1

我有一个包含3列的MySQL表,我想在其上使用多列索引。列A是TINYINT,B是SMALLINT,C是VARBINARY (16)。我应该使用索引A,B,C,因为A的粒度比B小,B比C小,以达到最大的插入速度?

EN

回答 2

Stack Overflow用户

发布于 2016-07-10 14:14:15

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

DELETEs会因为删除索引项而变慢。UPDATEs可能会变慢--这取决于索引列是否被更改。

SELECTs、UPDATEs和DELETEs,而不是INSERTs,需要查找行;为此,索引可能会有很大帮助。

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

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

所有这些都不受索引中列的顺序的影响。但是,如果索引大于RAM中可以缓存的大小,“缓存”就会起作用,可能涉及也可能不涉及I/O。但这是另一个话题。

一般而言,读索引带来的好处远远超过写操作的减慢。

票数 2
EN

Stack Overflow用户

发布于 2016-07-08 21:41:42

索引实际上会降低数据修改查询(insert,update,delete)的速度,因为关系型数据库管理系统不仅要更改表本身,还要更改索引。

从插入速度的角度来看,索引中字段的顺序并不重要,重要的是索引的数量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38268050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档