mysql索引优化:唯一性太低的字段
除非特殊情况,否则不要在唯一性太低的字段上面添加索引。
什么叫唯一性太低?
主要是一些表示状态或者类型的字段,例如:性别、是否删除等。
为何?
mysql在查询时,会将索引中的键值取出来与内存中页的数据相比较。
但是内存页中数据的顺序与索引中数据的顺序并不是一致的。
假如索引值为“1”,在数据页“a”中找到了数据,然后又在数据页“b”中找到了数据,“b”不在内存中。
此时mysql把“a”销毁,把“b”读到内存中。
接下来,mysql又在数据页“a”中找到了数据,此时又必须反过来把“b”销毁,把“a”读到内存中。
由于从索引去寻找表中数据是随机访问的,这种随机访问所造成的频繁的io操作,甚至比全表扫描的io消耗要大。
特殊情况
什么叫特殊情况呢,就是你可以 完全确定 索引的数据是连续的,同一个索引值的数据在同一个或者连续的数据页中不会有例外。此时使用索引 有可能 会提高查询效率。
本文来自博客园,作者:Bin_x,转载请注明原文链接:https://www.cnblogs.com/Bin-x/p/16717968.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2021-09-22 JDK安装
2021-09-22 maven安装