索引
范围查找 先排序
第一次建立索引是,就把数据存到数据项中
B+树
原理图
查找过程
例子:
查找数 27
一次查找的过程:磁盘块-->内存(io)-->内存锁定指针(快,忽略不计)
如果要查找数据项29,那么首先会把磁盘块1由磁盘加载到内存,此时发生一次IO,在内存中用二分查找确定29在17和35之间,锁定磁盘块1的P2指针,内存时间因为非常短(相比磁盘的IO)可以忽略不计,通过磁盘块1的P2指针的磁盘地址把磁盘块3由磁盘加载到内存,发生第二次IO,29在26和30之间,锁定磁盘块3的P2指针,通过指针加载磁盘块8到内存,发生第三次IO,同时内存中做二分查找找到29,结束查询,总计三次IO。
B+Tree索引
查询优化_单表使用索引
全值匹配我最爱
最佳左前缀法则
过滤条件要使用索引必须按照索引建立时的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用
因为索引是个二叉树,如果第一个都没匹配成功后面的树也不会执行。顺序是满足第一棵树,在第一课树的基础上查找
索引失效
全值匹配:索引和条件字段一致
最左前缀:查询从索引最左前列开始并且不跳过索引中的列
不在索引列上做任何操作
存储引擎不能使用索引中范围条件右边的列:将范围查询条件放置语句最后