mysql索引优化:唯一性太低的字段

除非特殊情况,否则不要在唯一性太低的字段上面添加索引。

 

什么叫唯一性太低?

主要是一些表示状态或者类型的字段,例如:性别、是否删除等。

 

为何?

mysql在查询时,会将索引中的键值取出来与内存中页的数据相比较。

但是内存页中数据的顺序与索引中数据的顺序并不是一致的。

假如索引值为“1”,在数据页“a”中找到了数据,然后又在数据页“b”中找到了数据,“b”不在内存中。

此时mysql把“a”销毁,把“b”读到内存中。

接下来,mysql又在数据页“a”中找到了数据,此时又必须反过来把“b”销毁,把“a”读到内存中。

由于从索引去寻找表中数据是随机访问的,这种随机访问所造成的频繁的io操作,甚至比全表扫描的io消耗要大。

 

特殊情况

什么叫特殊情况呢,就是你可以 完全确定 索引的数据是连续的,同一个索引值的数据在同一个或者连续的数据页中不会有例外。此时使用索引 有可能 会提高查询效率。

posted @   Bin_x  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2021-09-22 JDK安装
2021-09-22 maven安装
点击右上角即可分享
微信分享提示