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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LinkedList和ArrayList的区别[通俗易懂]

    LinkedeList和ArrayList都实现了List接口,但是它们的工作原理却不一样。它们之间最主要的区别在于ArrayList是可改变大小的数组,而LinkedList是双向链接串列(doubly LinkedList)。ArrayList更受欢迎,很多场景下ArrayList比LinkedList更为适用。这篇文章中我们将会看看LinkedeList和ArrayList的不同,而且我们试

    2022年3月10日
    51
  • jetty配置文件_jetty服务日志配置

    jetty配置文件_jetty服务日志配置jetty9配置contextPath说明:目录结构:webapps——-demo.war——-demo.xmldemo.xml文件内容//webapps/demo.war

    2025年12月14日
    7
  • java中strictfp关键字,java strictfp关键字用法大全详解

    java中strictfp关键字,java strictfp关键字用法大全详解一、strictfp关键字简介strictfp是Java中提供的一个保留关键字,该关键字是从这第javaJDK2版本儿开始出现的一直沿用到现在,只不过很多情况下都不怎么使用,所以容易被大家遗忘,因此今天我们来介绍一下这个关键字的用法和使用详解案例。strictfp实际上是对浮点类型做精确运算的一个关键字,实际意思是FP-strictfp,Java中的浮点类型有float和double两种,当这两…

    2025年7月24日
    4
  • python专业版激活成功教程_Python社区版和专业版的差距

    python专业版激活成功教程_Python社区版和专业版的差距PyCharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。PyCharm最常用的两个版本就是社区版和专业版,这两个版本区别如下:专业版和社区版的区别除了这两版本之外,还有一个版本就是教育版,这三个有什么区别呢?1.收费不同首先就是三者的收费不同:专业版是收费的,另外两个是免费的。2.功能不同pyCharm专业版是功能最丰富的,与社区版相比,PYc…

    2022年8月29日
    3
  • 开通阿里云短信服务

    开通阿里云短信服务阿里云短信服务1,阿里云用户权限操作1.1、找到后台放在个人头像上面选择AccessKey管理1.2、选择子用户1.3、创建用户组1.4、给用户组添加权限然后就可以看到你的权限里面多了一个sms的短信权限1.5、创建用户注意!注意!注意点击确认后只可以看到一次密码返回就看不到了注意!注意!注意点击确认后只可以看到一次密码返回就看不到了注意!注意!注意点击确认后只可以看到一次密码返回就看不到了1.6、把用户加入到用户组2、开通阿里云短信服务

    2025年7月9日
    5
  • 基于SPSS的聚类分析原理概述[通俗易懂]

    基于SPSS的聚类分析原理概述[通俗易懂]在声音样本数目比较多的情况下,直接进行成对比较法,工作量非常大,且评价者容易疲劳,在很大程度上影响评价结果的一致性和准确性。对于这种情况,采用聚类分析,从30个声音样本中选择有代表性的样本进行主观评价试验,大大降低了主观评价试验的工作量

    2022年10月18日
    4

发表回复

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

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