mysql索引规范

 

 

索引并不是越多越好!索引可以提高查询效率,但会降低增删改效率。但多了甚至会降低查询效率。

Innodb是按照主键索引的顺序来组织表,如没有建立主键,mysql会选择第一个非空唯一索引做为主键,或生成一个占6个字节的主键,自动生成的主键性能并不是最好的,所以建立表时最好明确建立一个主键:

  1、不使用更新频繁的列为主键,不使用联合索引作为主键,否则会降低性能

  2、不使用UUID,MD5,HASH,字符串作为主键,无法保证数据自动增长

  3、主键建议选择使用自增ID值

常见索引列建议:

  select、update、delete语句的where从句中列建立索引

  包含在order by 、group by、distinct中的字段

  多标Join的关联列

复合索引列的顺序:

  区分度最高的列放在联合索引的最左侧

  尽量把字段长度小的列放在联合索引的最左侧

  使用频繁的列放到联合索引的左侧

 

严格控制索引的数量,避免建立冗余索引和重复索引,如:

冗余索引,index(a,b,c),index(a,b),index(a)

重复索引,primary key(id),index(id),unique index(id)

 

对于频繁的查询优先考虑使用覆盖索引,避免Inonodb表进行索引的二次查找,可以把随机IO变为顺序IO加快查询效率

覆盖索引:就是包含了所有查询字段的索引

 

尽量避免使用外键约束,但一定在表与表之间的关联键上建立索引

外键可以用于保证数据的参照完整性,但建议在业务端实现

外键会影响父表和子表的写操作从而降低性能

  

转载于:https://www.cnblogs.com/spiderc/p/10721045.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值