美文网首页
Mysql 索引

Mysql 索引

作者: 不是锦萧 | 来源:发表于2016-03-17 17:17 被阅读0次

    索引是用来加快数据库查询的最重要的技术。

    Mysql官方的定义:索引是帮助Mysql高效获取数据的数据结构,所以:索引的本质是数据结构。

    数据之外,数据库还存储着满足特定查找算法的数据结构,这种数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

    索引的分类:

    1)B树索引,大部分引擎都支持,包括普通索引,唯一所以和主键索引;

    2)Hash索引,只有Memory 引擎支持,使用场景简单;

    3)R树索引,空间索引,主要用于存储地理空间,MyISAM

    4)Full-text 全文索引,MyISAM,InnoDB 5.6 开始支持

    索引的选择原则

    1)较频繁作为查询条件的需要创建索引

    2)唯一性太差的不适合单独创建索引;

    3)更新非常频繁的数据不适合作为索引。

    4)不会出现在where子句中的字段不应该建索引;

    5)where 和 join 子句用到的列需要加索引;

    6)尽量使用短索引,比如 可以取字符串的前10个字符建立 索引

    不建议建立索引的情况:

    1)表中数据比较少的时候,比如 少于 2000

    2)列的选择性比较低的时候,选择性计算: select count(distinct(column))/count(*) from table;

    索引能够使用的操作符:    < <= = > >= between in ,like 语句需要不以 % 或 _ 开头

    索引的最左匹配原则

    1)多列索引,用到左边的索引才能匹配

    2)like语句 以 % 或 _ 开头 不能匹配索引

    3)范围列 可以用到索引,但是范围列后面的列不能用到索引

    4)查询函数中有索引或表达式 则不能用到索引

    索引的代价

    1)索引需要消耗存储空间

    2)索引会加重 插入、删除和修改记录时的负担

    3)Mysql运行时需要消耗系统资源维护索引

    所以,如果表的记录比较少,字段的选择性比较低,不适合建立索引

    相关文章

      网友评论

          本文标题:Mysql 索引

          本文链接:https://www.haomeiwen.com/subject/cbeclttx.html