我又来了,接着上一篇的一个疑问,B树索引和hash索引的区别到底是什么?带着这样的疑问,我找到了一个总结的比较全面的一个博文:http://blog.sina.com.cn/s/blog_b92fcb510102vvdt.html ,emmmmm这篇文章呢,总结的是比较好的,但是没有介绍底层的数据结构区别,可能导致没有学习好数据结构的同学比较难以理解,需要记住这些区别,不能靠背诵课文一样一条一条一条背,要从底层的数据结构上面去理解,为啥hash等值查询比较快,不适用于范围查询,你知道hash是什么样的结构,你会觉得这样的结论理所当然,反之就是一头雾水。终于明白学校上的数据结构这种看起来没有什么明面上的好处的课程,是什么原因了。有的东西就是其实很简单,你觉得看一下这不懂那里不懂,就觉得太难放弃了,其实就是差一点耐心。咳咳,差点扯远了。
数据结构emmmm我搁这一两句也讲不清楚,贴一个博文比较清晰简明的讲了一下数据结构的基础知识 http://blog.youkuaiyun.com/wl044090432/article/details/53423333 温习一下,然后再来看看B树和hash的区别。
B树索引意味着记录是按照索引的值进行顺序排列的,并且每一个叶子页到根的距离相同。B-Tree索引适用于全键值、键值范围或者键前缀查找。以索引key(a,b,c)为例。
- 全值匹配:可以查找a=1 and b=1 and c=1
- 匹配最最前缀:可以查找a=1
- 匹配列前缀:可以查找a like ‘a%’
匹配范围值:可以查找 a>1 and a<10
全值匹配,那么abc三个索引组合的值就能确定,可以在B树上就找出满足这三个条件的记录主键(为什么是记录主键而不是记录的值或者位置,可以看上一篇文章,聚集索引时通往真实数据的