zoukankan      html  css  js  c++  java
  • Mysql 索引

    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命令集锦
    linux 删除文件名带括号的文件
    linux下的cron定时任务
    struts2文件下载的实现
    贴一贴自己写的文件监控代码python
    Service Unavailable on IIS6 Win2003 x64
    'style.cssText' is null or not an object
    "the current fsmo could not be contacted" when change rid role
    远程激活程序
    新浪图片病毒
  • 原文地址:https://www.cnblogs.com/Non-Tecnology/p/6087472.html
Copyright © 2011-2022 走看看