目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构。
1、B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度值不超过1,而且同层级的节点间有指针相互链接
2、在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,而且基于索引的顺序扫描时,也可以利用双向指针快速左右移动,效率非常高。
在mysql中,索引可以有效的提高查询效率,但在实际项目中有时候即使在where条件都加上索引,也不一定能够使用到索引
举个栗子:where id=3 and price>100;//查询id为3,100元以上的商品(id,price 分别为添加索引)
误区:只能用上id或price其中一个,因为是独立的索引,同时只能用上一个。
联合索引:在多列同时创建索引后,需要满足左前缀原则,才用到索引
以index(a,b,c)为例。(注意和顺序有关)
语句 | 是否使用索引
where a=3是,只使用了a列
where a=3 and =5 是,使用了ab列
where a=3 and b=4 and c=5 是,使用了abc
where b=3 or c=4 否因为跳过a
where a=3 and c =4 a用到索引,c不能
where a=3 and b like 'hello%' a用到了,b部分用到
本文地址:http://itbyc.com/mysql/21131.html
转载请注明出处。