除非特殊情况,否则不要在唯一性太低的字段上面添加索引。
什么叫唯一性太低?
主要是一些表示状态或者类型的字段,例如:性别、是否删除等。
为何?
mysql在查询时,会将索引中的键值取出来与内存中页的数据相比较。
但是内存页中数据的顺序与索引中数据的顺序并不是一致的。
假如索引值为“1”,在数据页“a”中找到了数据,然后又在数据页“b”中找到了数据,“b”不在内存中。
此时mysql把“a”销毁,把“b”读到内存中。
接下来,mysql又在数据页“a”中找到了数据,此时又必须反过来把“b”销毁,把“a”读到内存中。
由于从索引去寻找表中数据是随机访问的,这种随机访问所造成的频繁的io操作,甚至比全表扫描的io消耗要大。
特殊情况
什么叫特殊情况呢,就是你可以 完全确定 索引的数据是连续的,同一个索引值的数据在同一个或者连续的数据页中不会有例外。此时使用索引 有可能 会提高查询效率。
标签:唯一性,索引,太低,内存,mysql,数据 From: https://www.cnblogs.com/Bin-x/p/16717968.html