02索引设计规范

限制每张表上的索引数量,建议单张表索引不超过5个
索引并不是越多越好!索引可以提高效率同样可以降低效率
禁止给表中的每一列都建立单独的索引
 

Innodb是按照哪个索引的顺序来组织表的呢?
答案是:主键
 

每个Innodb表必须有一个主键
不使用更新频繁的列作为主键,不使用多列主键
不使用UUID , MD5 , HASH,字符串列作为主键
主键建议选择使用自增ID值
 

常见索引列建议
SELECT、UPDATE、 DELETE语句的WHERE从句中的列
包含在ORDER BY、GROUP BY、DISTINCT中的字段
多表JOIN的关联列
 

如何选择索引列的顺序
区分度最高的列放在联合索引的最左侧
尽量把字段长度小的列放在联合索引的最左侧
使用最频繁的列放到联合索引的左侧
02索引设计规范

对于频繁的查询优先考虑使用覆盖索引
覆盖索引:就是包含了所有查询字段的索引
避免Innodb表进行索引的=次查找
可以把随机IO变为顺序I0加快查询效率
 

尽量避免使用外键
不建议使用外键约束,但- -定在表与表之间的关联键上建立索引
外键可用3 F保证数据的参照完整性,但建议在业务端实现
外键会影响父表和子表的写操作从而降低性能