什么是前缀索引?
前缀索引也叫局部索引,比如给身份证的前 10 位添加索引,类似这种给某列部分信息添加索引的方式叫做前缀索引。
为什么要用前缀索引?
前缀索引能有效减小索引文件的大小,让每个索引页可以保存更多的索引值,从而提高了索引查询的速度。但前缀索引也有它的缺点,不能在 order by 或者 group by 中触发前缀索引,也不能把它们用于覆盖索引。
什么情况下适合使用前缀索引?
当字符串本身可能比较长,而且前几个字符就开始不相同,适合使用前缀索引;相反情况下不适合使用前缀索引,比如,整个字段的长度为 20,索引选择性为 0.9,而我们对前 10 个字符建立前缀索引其选择性也只有 0.5,那么我们需要继续加大前缀字符的长度,但是这个时候前缀索引的优势已经不明显,就没有创建前缀索引的必要了。
举例说明:
当要索引的列字符很多时 索引则会很大且变慢
可以只索引列开始的部分字符串 节约索引空间 从而提高索引效率
原则:降低重复的索引值
例如现在有一个地区表
发现 area 字段很多都是以 china 开头的
那么如果以前1-5位字符做前缀索引就会出现大量索引值重复的情况
索引值重复性越低 查询效率也就越高
前缀索引测试
SELECT * FROM x_test WHERE x_name = '1892008.205824857823401.800099203178258.8904820949682635656.62526521254';
查询时间:0.014s ( 首次执行无缓存状态下 )
作者:秋天的风,夏天的雨
cnblogs.com/beyond-succeed/p/12574647.html
END
十期推荐
【231期】面试官:Java中 serialVersionUID 的作用是什么?
【232期】面试官:Spring的 IOC 容器比New对象究竟好在哪?
【235期】面试官:Redis的数据是存在内存里吗?谈谈Redis各种数据类型的使用场景?
【237期】面试官:如何发现 Redis 热点 Key ,解决方案有哪些?
【238期】面试官:Redis新版本开始引入多线程,谈谈你的看法?
【239期】面试官:如何使用Redis实现电商系统的库存扣减?
与其在网上拼命找题? 不如马上关注我们~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/7973.html