Mysql 数据库索引设置规范

  1. 创建表一定要有主键,推荐使用雪花或梨花
  2. 不要使用UUID、MD5、HASH、字符串列作为主键(无法保证数据的顺序增长)
  3. 限制每张表上的索引数量。索引并不是越多越好!索引可以提高效率同样可以降低效率。索引可以增加查询效率,但同样也会降低插入和更新的效率,甚至有些情况下会降低查询效率。因为mysql优化器在选择如何优化查询时,会根据统一信息,对每一个可以用到的索引来进行评估,以生成出一个最好的执行计划,如果同时有很多个索引都可以用于查询,就会增加mysql优化器生成执行计划的时间,同样会降低查询性能。
  4. 区分度最高的放在联合索引的最左侧(区分度=列中不同值的数量/列的总行数)
  5. 尽量把字段长度小的列放在联合索引的最左侧(因为字段长度越小,一页能存储的数据量越大,IO性能也就越好)
  6. 使用最频繁的列放到联合索引的左侧(这样可以比较少的建立一些索引)
  7. 避免建立冗余索引和重复索引---因为这样会增加查询优化器生成执行计划的时间。

重复索引示例:primary key(id)、index(id)、unique index(id)

冗余索引示例:index(a,b,c)、index(a,b)、index(a)

  1. 优先考虑覆盖索引
    对于频繁的查询优先考虑使用覆盖索引。覆盖索引就是包含了所有查询字段(where,select,ordery by,group by包含的字段)的索引
    覆盖索引的好处:1.可以把随机IO变成顺序IO加快查询效率;2.能够避免回表查询,提升查询效率
  2. 一定要在表与表之间的关联键上建立索引

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