MySQL-索引


一、索引的数据结构

B-Tree索引

B+Tree索引,InnoDB使用

关于Tree的解释可以查看这里:

    MySQL索引原理
     mysql innodb: b+树 的优点

二、使用索引

哪些查询可以使用B-Tree索引?

  • 全值匹配
  • 匹配最左原则,只是用索引的第一列
  • 匹配列前缀,只是用索引的第一列
  • 匹配范围值,只是用索引的第一列
  • 精确匹配某一列并范围匹配另一列,第一列全值匹配,第二列范围匹配
  • 只访问索引的查询

B-Tree索引限制

  • 不是按照最左列开始查询
  • 不能跳过索引中的列
  • 如果查询中某列使用了范围查询,则其右边的列都无法使用索引


三、其他索引

哈希索引,Memory引擎使用,只有精确匹配索引的所有列才有效。

空间数据索引R-Tree,MyISAM支持使用。

全文索引,类似于搜索引擎。

四、索引策略

    • 独立的列
    • 前缀索引
    • 多列索引/索引合并
    • 合适的索引列顺序
    • 聚簇索引,数据行存放在索引的叶子页,节点页只包含索引列
    • 覆盖索引,索引包含所有需要查询的字段的值,无需回表
    • 用索引扫描排序
    • 压缩(前缀压缩)索引,MyISAM使用前缀压缩来减少索引大小,可以提高性能
    • 冗余和重复索引,影响性能,考虑删除
    • 未使用的索引,考虑删除
    • 索引和锁,InnoDB只有访问行时才回加锁,而索引能够减少InnoDB访问的行数,从而减少锁的数量。
原文地址:https://www.cnblogs.com/bigshark/p/7912425.html