Mysql基础知识之索引设计规范

95次阅读
没有评论

限制毎张表上的索引数量, 建议单张表索引不超过 5 个

索引并不是越多越好! 索引可以提高效率同样可以降低效率

索引可以增加查询效率, 但同样也会降低插入和更新的效率

禁止给表中的每一列都建立单独的索引

 

每个 innodb 表必须有一个主键

不使用更新频繁的列作为主键(值变了索引的排序也会跟着变),不使用多列主键(联合索引)
不使用 UuD,MD5,HASH 字符串列作为主键
主键建议选择使用自增 ID 值

 

常见索引列建议

SELECT、UPDATE、DELETE 语句的 WHERE 从句中的列
包含在 ORDER BY、GROUP BY、DISTINCT 中的字段
多表 JON 的关联列

 

如何选择索引列的顺序

区分度最高的列放在联合索引的最左侧
尽量把字段长度小的列放在联合索引的最左侧
使用最频繁的列放到联合索引的左侧

 

避免建立冗余索引和重复索引

例:在 id 列上建立主键,索引,唯一索引,就是重复索引,primary key(id)、index〔id)、unique index(id)
例:在 a 列上建立多个联合索引  index(a,b,c)、index(a,b)、index(a)

 

对于频繁的查询优先考虑使用覆盖索引

覆盖索引: 就是包含了所有查询字段的索引
避免 innodb 表进行索引的二次查找
可以把随机变为顺序 IO 加快查询效率

 

尽量避免使用外键

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

正文完
有偿技术支持加微信
post-qrcode
 
评论(没有评论)
验证码