Mysql中的索引

来源:互联网 发布:杭州网络培训机构 编辑:程序博客网 时间:2024/05/16 14:58

Mysql中的索引,包含b+tree,hash索引,fulltext索引,R-tree索引四种。

b-tree一个节点中包含n个关键字,则其可以有n+1个孩子,关键字既是分隔点。其中innodb默认的索引是b+tree。通过对b-tree的结构稍加改造,让所有与关键字关联的卫星数据放在叶节点中,内部节点只包含关键字和孩子指针,最大化了分支因子,来减少磁盘的IO(通过把尽量多的相同关键字域下的信息放在同一磁盘块内)。而红黑树则不能做到这些功能。

hash索引查找时间都是常数,但是仅仅满足=,IN,<=>的查询,不能使用范围查询,且无法被用来避免数据的排序操作(b-tree可以利用索引来进行order by 的排序操作,而不用file sort),在组合索引里不能使用部分索引,在遇到很多hash值相等的时候性能并不一定就比B-tree高。Mysql中的memory引擎使用hash索引。

  fulltext索引是全文索引。具体应用场合还不理解,大概主要用来代替like %**%的?

  R-tree主要用来解决空间数据检索的问题,用得很少吧。。主要优势在于使用范围查找的时候,可以利用R-Tree 索引,而B-Tree 索引就无能为力了。