Mysql基础篇-11-哪些情况需要建索引哪些不需要

1. 哪些情况需要创建索引

  • 1.主键自动建立唯一索引;
  • 2.频繁作为查询条件的字段应该创建索引
  • 3.查询中与其他表关联的字段,外键关系建立索引
  • 4.频繁更新的字段不适合创建索引:因为每次更新不单单是更新了记录还会更新索引
  • 5.where条件里用不到的字段不创建索引
  • 6.单键/组合索引的选择问题,who?(在高并发情况下倾向创建组合索引)
  • 7.查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
  • 8.查询中统计或者分组字段

2. 哪些情况不需要创建索引

  • 1.表字段记录太少。 按照官方的意思一般300万记录就开始性能下降,但是上百万了就需要开始调整了
  • 2.经常增删改的表。
  • 3.数据重复且分布平均的表字段。 如国籍,性别这种,建索引没有太大实际效果;

假如有一个表有10万行记录,有一个字段A只有T和F两种值,且每个值的分布概率大约为50,那么对这种表A字段建索引一般不会提高数据库的查询速度。

索引的选择性是指索引列中不同值的数目与表中记录数的比。如果一个表中有2000条记录,表索引列有1980个不同值,那么索引的选择性就是1980/2000=0.99

3. 总结

一张表需不需要建立索引,首先得先看下表里面的数据的零散度,如果数据大量重复,则不需要建索引,零散度越高,建索引才有意义,其次再看表大小,再根据查询条件具体优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alan0517

感谢您的鼓励与支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值