Mysql hash和Btree索引的区别以及索引的建立规则

特别指出,本文针对mysql 5.7+ 以上版本说明的,在一下的版本可能会有出入,不过应该不大。

注:本文两种类型的索引介绍来着mysql官方文档(https://dev.mysql.com/doc/refman/5.7/en/index-btree-hash.html)的翻译,有的地方意思只是一个大概,水平有限,有大神看到,如有空,有翻译了请发一份到1072247966@qq.com

理解Hash和B-Tree的数据结构类型能够让我们针对不同的查询在不同的存储引擎下选择合适的索引,特别是内存的存储引擎,允许你选择hash还是B-Tree。

B-Tree索引特点

B-Tree类型的索引可以在一个查询当中使用=,>,>=,>=,或者between,当然也支持like操作符,但是like后的字符串不能以通配符%开头。例如,下面的例子会命中索引:

select * from table_name where col_name like 'xxx%';

select * from table_name where col_name like 'xxx%XX';

而下面的例子不会命中索引:

select * from table_name where col_name like '%XX';

select * from table_name where col_name likeother_col;

说得比较简洁,但是上面的这些东西必须满足最左匹配原则,比如你建立了abc索引,在使用的时候必须先把a伺候了。

Hash索引特点

hash索引仅仅用于比较是否相等的操作,不支持范围查询,如用<查询一个范围的值。在ordery by中使用hash索引页不会提速,对月hash索引的命中必须是一个完整的索引。

索引的查看

使用explain可以查看索引是否命中,如 explain select * from table_name where index_name = 'xx';

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值