开发者学堂课程【MySQL 高级应用 - 索引和锁:哪些情况不适合建索引】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/598/detail/8596
哪些情况不适合建索引
不适合建索引的情况
1.表记录太少
2.经常增删改的表—— Why :提高了查询速度,同时却会降低更新表的速度,如对表进 INSERT,UPDATE 和 DELETE。因为更新表时, MysQL 不仅要保存数据,还要保存一下索引文件。
数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据列建立3.注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
以你现在一百条记录以内,那个索引建或者不建。如果说上百万级别的,基本上满三百万左右性能开始逐渐下降,虽然说它官方上说撑得出5-8百万。但是从我们实践上,比如说像我们根本不敢到五百万才去优化。
差不多三百万就开始了。某一个字段,假设所有同学有一个国籍字段,这是固定且唯一的。这种去建立没什么效果。比如说性别,不是男就是女。也就是说数据的差异率和重复率不高,这种建没有太多意义。
假如一个表有10万行记录,有一个字段 A 只有 T 和两
种值,且每个值的分布概率大约为50%,那么对这种表 A 字段建索引一般不会提高数据库的查询速度。索引的选择性是指索引列中不同值的数目与表中记录数的比。
如果一个表中有2000条记录,表索引列有1980个不同的值,那么这个索引的选择性就是1980/2000=0.99。
一个索引的选择性越接近于1,这个索引的效率就越高。