流苏小筑

优先考虑覆盖索引

什么是覆盖索引?

理解方式一:

索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它 不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数 据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。

理解方式二:

非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有 列 (即建索引的字段正好是覆盖查询条件中所涉及的字段)。
简单说就是, 索引列+主键 包含 SELECT 到 FROM之间查询的列 。
举例:

select age from studen where age > 123;

覆盖索引的利弊

好处:

1.避免Innodb表进行索引的二次查询(回表)
2.可以把随机I/O变成顺序I/O加快查询效率

弊端:

索引字段的维护总是有代价的。因此,在建立冗余索引来支持覆盖索引时就需要权衡考虑了。这是业务DBA,或者称为业务数据架构师的工作。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »