0
点赞
收藏
分享

微信扫一扫

mysql:有哪些索引,什么时候创建索引,什么时候不创建索引,创建索引的原则有哪些。


最近学习mysql,学习的索引的一些总结。

mysql:有哪些索引,什么时候创建索引,什么时候不创建索引,创建索引的原则有哪些。_MySQL

1.哪些索引

  1. 普通索引
  2. 唯一性索引
  3. 主键索引
  4. 单列索引
  5. 多列(组合、联合)索引
  6. 全文索引
  7. 补充:空间索引

小结:不同的存储引擎支持的索引类型也不一样 InnoDB :支持 B+树。MyISAM : 支持 B树

2.索引的设计原则

  1. 字段的数值有唯一性的限制
  2. 频繁作为 WHERE 查询条件的字段
  3. 经常 GROUP BY 和 ORDER BY 的列
  4. UPDATE、DELETE 的 WHERE 条件列
  5. DISTINCT 字段需要创建索引
  6. 多表 JOIN 连接操作时,创建索引注意事项(连接的索引字段要一直-类型)
  7. 使用列的类型小的创建索引
  8. 使用字符串前缀创建索引
  9. 区分度高(散列性高)的列适合作为索引(性别字段就不适合)
  10. 使用最频繁的列放到联合索引的左侧
  11. 在多个字段都要创建索引的情况下,联合索引优于单值索引

3.哪些情况不适合创建索引

  1. 在where中使用不到的字段,不要设置索引
  2. 数据量小的表最好不要使用索引
  3. 有大量重复数据的列上不要建立索引(对应上面的第9条)
  4. 避免对经常更新的表创建过多的索引
  5. 不建议用无序的值作为索引
  6. 删除不再使用或者很少使用的索引
  7. 不要定义冗余或重复的索引

MySQL8.0索引新特性

  • 支持降序索引
    注意 降序索引只对查询中特定的排序顺序有效,如果使用不当,反而查询效率更低。例如,上述
    查询排序条件改为order by a desc, b desc,MySQL 5.7的执行计划要明显好于MySQL 8.0。
  • 隐藏索引
    这种通过先将索引设置为隐藏索引,再删除索引的方式就是软删除 。(算是逻辑删除)


举报

相关推荐

0 条评论