程序猿之路

MySql索引实例

2017-05-11  本文已影响112人  三斤牛肉

回顾一下以前写过的Mysql索引相关理论知识,
1,一般我们建表都会有一个主键ID,mysql会根据该ID生成聚集索引(如果没有主键,也会有一个隐藏的ID用来做索引),该索引会生成一颗B+树,节点的键为该ID,所有叶节点上会挂上对应的数据
2,辅助索引同聚集索引一样会建一颗B+树,但是所有叶节点挂的是该数据的主键ID,所以一般使用辅助索引会再在聚集索引上查一遍
3,可以用多个键建立联合辅助索引,根据建索引时各个字段的先后顺序,按最左原则使用

今天来验证一把到底什么时候用了,怎么用的索引
随便找了张测试表,一共5个索引,1个主键id,1个唯一索引sm_id,1个组合索引login_name+password,2个普通索引real_name,phone

image.png

一,没有搜索条件的时候


二,搜索单列

image.png image.png
总结上面:没有查询条件的前提下,当查询字段被索引覆盖的时候,会选择走该索引

三,搜索单列+Order By

image.png image.png

四,带搜索条件


�总结:
1,首先根据查询条件选择最优的索引执行。
2,当查询结果为主键或为该索引的组成部分时,可以直接使用索引树上的键,即使用覆盖索引。
3,组合索引根据最左前缀匹配原则,查询条件中必须出现该组合索引的第一项。
4,like不能做前缀匹配'%XXX',可以做后缀'XXX%',后缀匹配可以转换成range查询
5,可以将order by 中字段和查询条件做成联合索引减少一次内存排序。

上一篇下一篇

猜你喜欢

热点阅读