资讯动态

MySQL八股之数据库索引优化:7个关键注意事项

发布时间:2026/8/6 22:14:27 来源:尧图企业网站定制
1、在WHERE中使用不到的字段不设置索引WHERE条件包括ORDER BY和GROUP BY里使用不到的字段不需要设置索引因为索引的价值是快速定位如果起不到定位的字段通常是不需要设置索引的。2、数据量小的表不设置索引表的记录过少例如小于1k也不需要创建索引。因为这时候是否创建索引对于查询效率的影响并不大甚至查询所花的时间还比遍历索引时间更短索引此时就不会产生优化效果。3、有大量重复数据的列上不要设置索引在条件表达式中经常用到的不同值较多的列上创建索引但是字段中如果存在大量重复数据比如高于10%就不要建立索引。例如学生表的性别字段只有男和女两个值因此无需建立索引。因为有索引的情况下不但不会提高查询效率反而会严重降低数据更新速度。4、避免对经常更新的表创建过多的索引频繁更新的字段不一定要创建索引因为更新数据的时候也要更新索引如果索引太多在更新索引的时候也会造成负担从而影响效率。避免对经常更新的表创建过多的索引并且索引中的列尽可能少此时虽然会提高查询速度但是会降低更新表的速度。5、不建议用无序的值作为索引一些字段例如身份证、MD5、HASH、UUID在索引比较的时候需要转换为ASCII并且插入的时候可能会导致页的分裂。6、删除不再使用或者很少使用的索引表中的数据被大量更新或者数据的使用方式被改变后原来的一些索引方式可能不再需要数据库管理员应当定期找出这些索引并删除他们以减少索引对更新操作的影响。7、不定义冗余或者重复的索引1冗余索引有时候会对同一个列创建了多个索引例如index(a,b,c)就相当于index(a)、index(a,b)、index(a,b,c)如果已经创建了a、b、c的联合索引又创建了a的单列索引就产生了冗余。2重复索引CREATE TABLE repeat_index_demo ( col1 INT PRIMARY KEY, col2 INT, UNIQUE uk_idx_c1 (col1), INDEX idx_c1 (col1) );对col1字段就存在重复索引它既是主键又给定义了唯一索引和普通索引但是主键本身就会生成聚簇索引因此唯一索引和普通索引是重复的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价