MySQL不适合创建索引的7种情况

1. 在where中使用不到的字段,不要设置索引

  • WHERE条件(包括order by ,group by)

2. 数据量小的表最好不要使用索引

  • 表记录太少,比如少于1000个,创建索引会先查索引,再回表,查询花费的时间可能比不创建索引还要高。

3. 有大量重复数据的列上不要建立索引

4. 避免对经常更新的表创建过多的索引

  • 频繁更新的字段不一定要创建索引,更新数据时,索引也会更新,影响性能
  • 避免对经常更新的表创建过多的索引,并且索引中的列尽可能少。

5. 不建议用无序的值作为索引

例如身份证、UUID(在索引比较时需要转为ASCII,并且插入时可能造成页分裂)、MD5、HASH、无序长字符串等。

  • Alibaba规范:身份证必须设置为唯一索引

6. 删除不再使用或者很少使用的索引

  • 表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。
  • 数据库管理员应当定期找出这些索引,将他们删除,从而减少索引对更新操作的影响。

7. 不要定义冗余或重复的索引

冗余场景,如:

联合索引中,name列作为最左列,当where条件中单独使用name时,会快速从联合索引中快速搜索。

重复场景,如:

​​​​​​​

猜你喜欢

转载自blog.csdn.net/weixin_42675423/article/details/131744208