码迷,mamicode.com
首页 > 数据库 > 详细

Mysql 索引

时间:2016-11-22 02:02:28      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:精确   sql   补充   bsp   操作   控制   innodb   查询   自动   

Mysql支持2中索引类型:Btree和Hash索引。

1、B-tree :

特点:

     支持范围区间查询:比如我们平常的按日期区间查询

     最左前缀匹配原则:如果不是按照索引的最左列(索引是多列的情况)开始查询,则无法使用索引。举例:Index(A,B,C),语句:A=a and B=b可以使用索引,B=b and C=c就没有走索引,因为没有用到A列(同样A=a and C=c,C用不到索引),当然A、B、C的顺序查询的时候可以颠倒。

    若查询遇到范围查询,则其右边所有字段无法使用索引;例如:A=a and B>b and C=c ,则C用不到索引

2、Hash 索引:

特点:

      索引列根据Hash函数计算Hash码存放在Hash表中,同时存放指向数据行的指针。

      支持精确匹配,因为Hash码始终是用索引的全部列来计算得到,所以Index(A,B),无法只对A进行索引

      不支持范围查询,支持如:= <=> in()等操作。Hash冲突较少的情况下访问数据非常快。

 

补充:

 Innodb引擎有“自适应哈希索引”的功能,当Innodb发现某些列使用非常频繁的时候,会自动在B-Tree的基础上再建一个Hash索引,这样B-Tree索引也就具有快速查找的功能,这个操作是引擎内部的行为,用户无法控制

Mysql 索引

标签:精确   sql   补充   bsp   操作   控制   innodb   查询   自动   

原文地址:http://www.cnblogs.com/Non-Tecnology/p/6087472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!