mysql索引

MYSQL索引

  • 索引的类型
  • 索引创建原则
  • 索引失效场景

索引的类型

索引的几种类型: 常用b+树索引, 唯一索引, 不常用哈希索引, 全文索引,空间索引,前缀索引, 外键索引

种类泛指: 聚簇索引(默认主键索引, 无主键使用隐式字段), 非聚簇索引(二级索引), 如果二级索引不是覆盖索引, 会进行回表操作

索引创建原则

1.选择合适的索引, 索引经常用于查询的条件作为索引

2.考虑联合索引, 可以更好地支持复合查询条件和聚合排序操作

3.考虑索引的顺序,最左匹配, mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配 对于多列索引, 把常用的列放在前面

4.尽量选择数据量少、区分度高的列做索引, 如果数据量很大,尽量使用前缀索引

5.避免过多的索引和太大的索引, 增加维护成本, 导致性能降低, 需要考虑查询和写入的平衡性 , 定期维护索引

删除多余的索引, 尽量扩展索引

索引失效场景

1.没有使用索引列,或者索引列进行了函数、表达式(计算,判断操作)、类型转换(数据类型不匹配)等操作。避免操作索引列

2.使用like查询时使用通配符开头,尽量避免like查询开头使用通配符

3.使用or连接多个条件, mysql只能选择一个条件进行索引匹配。尽量使用and连接多个条件

4.数据分布不均匀, 某些值的重合度很高, 会导致索引失效。 考虑复合索引或者调整数据分布

5.多表连接时未使用合适的索引,(关联列无索引,数据分布不均) 会导致索引失效。使用索引列关联

6.数据量过大, mysql仍有可能通过全表扫描以避免索引io开销,导致索引失效。考虑分区表

你可能感兴趣的:(mysql,数据库)