索引知识总结

简介

索引是用于快速找到记录的一种数据结构

索引值匹配的方式

1.全值匹配(所有的列都进行匹配)
2.匹配最左前缀(只使用索引的第一列)
3.匹配列前缀(只匹配某一列值开头部分)
3.匹配范围值(查找值为某一范围时,只使用第一列)
4.覆盖索引(只访问索引,不访问数据行)

索引的优点

1.减少需扫描的数据量
2.避免排序和临时表
3.将随机IO表为顺序IO

索引类型

在mysql中,索引由存储引擎实现,不同的存储引擎索引的工作方式不同,底层实现不同。
mysql最常用的存储引擎是MyISAM和InnoDB。

1.B-Tree索引

B-Tree索引值按顺序排序,很适合查找范围数据。
索引多列值排序根据create table语句定义时的顺序决定。
B-Tree树能加快访问数据的速度,是因为使用了索引就不用进行全表扫描来获得数据。
根节点存放了指向子节点的指针,且叶子到根的距离相同,可通过指针查找叶子页,进而根据叶子页的上下限的值从而决定进入下一个叶子页。

对于B-Tree索引,InnoDB通过B+Tree实现,InnoDB按照原数据格式进行存储,
MyISAM使用前缀压缩技术,所以实际存储比较小,通过数据的物理位置引用被索引的行。

B-Tree索引使用限制

1.只能按匹配最左前缀的方式即,必须包含索引最前列
2.不能跳过索引中的列
3.某个列时范围值,则其后的所有索引都不能使用

2.哈希索引

哈希索引基于哈希表实现,需要精确匹配索引的所有列值才能生效,每一行数据都被存储引擎赋予一个哈希码,通过不同的键值索引得到哈希码,从而在哈希表中找到指向数据行的指针。
mysql中只有memory索引支持哈希索引。InnoDB有自适应哈希索引功能,当索引值使用很频繁时,可以在B-Tree上创建哈希索引。这个功能无需用户设置,由系统自行启动使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值