程序员

mysql索引相关知识

2020-07-01  本文已影响0人  尉昌达
mysql索引数据结构--B+Tree

B+Tree是在BTree的基础之上做的一种优化,变化如下:

1、B+Tree每个节点可以包含更多的节点,这个做的原因有两个,第一个原因是为了降低树的高度,第二个原因是将数据范围变为多个区间,区间越多,数据检索越快
2、非叶子节点存储key,叶子节点存储key和数据
3、叶子节点两两指针相互连接(符合磁盘的预读特性),顺序查询性能更高

InnoDB MyISAM 创建索引的键是其他字段

1.主键一般设为自增,新增数据都会在索引文件末尾添加,利于索引维护,若不是自增,在中间插入会导致索引页的页分裂和合并,增加开销。
2.覆盖索引select id from tbl_t where name = 'mm',这里对name列建立了索引,id是主键,这样的话就可以通过一次name的索引拿到id了,不用再去id的索引树里找,不需要用到回表。
3.组合索引,(最左匹配原则)

比如有张表,有id,name,age,address, 我们在name,age创建了组合索引,则当
select * from tbl where name=' ' and age=' ';
select * from tbl where name=' ' ;
上面会用到索引。
但是直接
select * from tbl where age=' ';
这样不会用到索引。 

4.索引下推select * from tbl where name=' ' and age = 10;这里原先name建有索引,本来要用回表,先根据name 索引找到->对应id,再去id索引去筛选age=10.
现在可以用索引下推,提前查找name的时候筛选age,在回表之前做了数据筛选,提高执行效率

上一篇 下一篇

猜你喜欢

热点阅读