mysql 前缀索引_MySQL前缀索引

mysql 前缀索引_MySQL前缀索引有时候需要索引很长的字符字段列,这会增加索引的存储空间以及降低索引的查询效率,一种策略是可以使用哈希索引,还有一种就是使用前缀索引。前缀索引是选择字符列的前n个字符作为索引,这样可以大大节约索引空间,从而提高索引效率。前缀索引的选择性使用前缀索引,在一些场景下可能使得重复的索引值变多,索引的选择性变低,查找时需要过滤更多的行,因此建立前缀索引也要考虑前缀的索引选择性不能太低。Tips:主键索引和唯…

大家好,又见面了,我是你们的朋友全栈君。

edf785913ea463b60ad5cee71bf53317.png

有时候需要索引很长的字符字段列,这会增加索引的存储空间以及降低索引的查询效率,一种策略是可以使用哈希索引,还有一种就是使用前缀索引。

前缀索引是选择字符列的前n个字符作为索引,这样可以大大节约索引空间,从而提高索引效率。

前缀索引的选择性

使用前缀索引,在一些场景下可能使得重复的索引值变多,索引的选择性变低,查找时需要过滤更多的行,因此建立前缀索引也要考虑前缀的索引选择性不能太低。

Tips:主键索引和唯一索引的索引值是不可能重复的,索引的选择性就很高,查询效率也最好。

选择足够长的前缀可以更好的保证高选择性,但又不能太长,需要一个合适的长度。怎么选?

在数据增长不是很快的表,可以通过以下方式来计算出合适的前缀索引的选择长度值:

SELECT COUNT(DISTINCT index_column)/COUNT(*) FROM table_name;

Tips:index_column 代表要添加前缀索引的列

在数据增长很快的表中,上述方式计算就不准确了,原因在于数据增长很快的表 index_column 字段重复的记录和总记录数据变化都比较快,那么计算出来的前缀索引长度也是随着变化很快的。

创建前缀索引

ALTER TABLE table_name ADD INDEX index_name (index_column(length));

前缀索引的局限性

前缀索引能使索引更小、更快,但是 MySQL 无法使用前缀索引做 ORDER BY 和 GROUP BY , 也无法使用前缀索引做覆盖扫描。

后缀索引

MySQL 没有提供后缀索引,事实上,一些业务场景对后缀匹配选择性更高,比如我曾经参与过的项目,手机的入网标示imei号,前缀都是86等固定的国家编号开头,这个时候可以将字符反转后存储,就可以建立选择性较高的前缀索引。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142201.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • cBridge 2.0测试网升级:全新的状态守卫者网络UI/UX[通俗易懂]

    cBridge 2.0测试网升级:全新的状态守卫者网络UI/UX[通俗易懂]今天,我们发布了cBridge2.0升级版测试网!

    2022年6月3日
    33
  • Windows快速搭建FTP服务器

    Windows快速搭建FTP服务器Windows快速搭建FTP服务器一、准备条件二、搭建过程2.1配置IISWeb服务器2.2在IIS中配置FTP站点2.3测试FTP站点2.4创建FTP用户三、搭建问题3.1如何改变FTP的登录访问设置?3.2机器IP发生变化了,如何修改IP地址或端口?3.3如何设置多IP?一、准备条件Windows操作系统二、搭建过程2.1配置IISWeb服务器(1)依次打开控制面板->程序->启用或关闭windows功能上述操作也可以直接使用Win+R,在运行

    2022年7月15日
    52
  • 特征融合 & FFM(Feature Fusion Module) 特征融合模块

    特征融合 & FFM(Feature Fusion Module) 特征融合模块FFM(FeatureFusionModule)特征融合模块

    2022年5月4日
    263
  • java months between,ORACLE函数MONTHS_BETWEEN

    java months between,ORACLE函数MONTHS_BETWEEN因系统折旧月份是按当月是否满15天来算是否为一个月,故此研究了下MONTHS_BETWEEN已适应折旧的逻辑官网函数说明:MONTHS_BETWEENreturnsnumberofmonthsbetweendatesdate1anddate2.Ifdate1islaterthandate2,thentheresultispositive.Ifdate1…

    2022年7月12日
    13
  • 帧中继_帧中继交换机

    帧中继_帧中继交换机NBMA实验实验准备:1、 四台路由器,R2配置成帧中继交换机。2、 R1,R3,R4运行OSPF。实验配置:R1:interfaceLoopback0 ipad

    2022年8月3日
    4
  • C语言实现大整数乘法

    C语言实现大整数乘法转载自:点击打开链接乘法规律,一个数的第i位和另一个数的第j位相乘,一定会累加到结果的第i+j位,结果的数组一个数组元素存2位数,最后对结果处理进位,最后打印出来方法一见上面链接https://www.cnblogs.com/king-ding/p/bigIntegerMul.html方法二voidIntMultiply(inta[],intb[],intc[],intma,in…

    2022年5月5日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号