广告
返回顶部
首页 > 资讯 > 数据库 >MySQL怎么给字符串加一个高效索引
  • 495
分享到

MySQL怎么给字符串加一个高效索引

2023-07-05 14:07:51 495人浏览 泡泡鱼
摘要

这篇文章主要介绍了MySQL怎么给字符串加一个高效索引的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql怎么给字符串加一个高效索引文章都会有所收获,下面我们一起来看看吧。需求在日常需求中,用户使用手机号或

这篇文章主要介绍了MySQL怎么给字符串加一个高效索引的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql怎么给字符串加一个高效索引文章都会有所收获,下面我们一起来看看吧。

需求

在日常需求中,用户使用手机号或者邮箱登录某一个系统,是一个很常见的操作,那如何在类似手机号或者邮箱这样的字段上建立一个合理的索引呢?

前缀索引

前缀索引,就是以一个字段值的一部分作为索引。我们在mysql中创建索引时,如果不指定索引字段的长度,那么就会以整个字符串来建立索引。

语句1:alter table test add index idx(email);语句2:alter table test add index idx(email(8));

对于语句1,创建的索引中,会包含每条记录中的整个email字符串值。

对于语句2,创建的索引中,保存的是每条记录中email字段的前8个字节。

使用前缀索引的优势很明显,那就是索引占用的空间会更小,整个索引树会更紧凑,树的高度相对更低。

但是相应的,索引的区分度会变低,可能导致索引扫描行数增加。

在我们创建索引时,索引的区分度是一个很重要的指标。区分度越高,重复的值就越少,扫描的效率就越高。

在使用前缀索引时,合理规划使用的前缀长度,不仅可以节省空间,还可以不用额外增加扫描的行数。具体使用多少的长度,建议根据我们的实际业务场景来判断、测试

倒序+前缀索引

倒序+前缀索引有一个经典的使用场景,就是对身份证号做索引。

假设我们现在要维护一个市县所有人的身份信息,其中按身份证号查询是一个高频场景。

身份证号码一共15位或者18位,一般来说,同一个市县的人身份证号前6位一般是相同的,如果直接对身份证号做全索引,那么会比较浪费空间,导致性能下降。直接前缀索引的话,前6位的区分度又很低(甚至可以说没有,因为大家前6位基本都一样)。

这时,使用倒序+前缀索引的好处就体现出来了。

我们先将身份证倒序存储,或者冗余一个倒序的身份证号字段,然后取前6位做前缀索引。

身份证后6位的区分度已经基本上够我们使用了,如果你还觉得查询速度不够,那取前8位也是没问题的。

关于“Mysql怎么给字符串加一个高效索引”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MySQL怎么给字符串加一个高效索引”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL怎么给字符串加一个高效索引

本文链接: https://www.lsjlt.com/news/352133.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL怎么给字符串加一个高效索引
    这篇文章主要介绍了MySQL怎么给字符串加一个高效索引的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL怎么给字符串加一个高效索引文章都会有所收获,下面我们一起来看看吧。需求在日常需求中,用户使用手机号或...
    99+
    2023-07-05
  • MySQL给字符串加一个高效索引的实现
    目录需求前缀索引倒序+前缀索引总结需求 在日常需求中,用户使用手机号或者邮箱登录某一个系统,是一个很常见的操作,那如何在类似手机号或者邮箱这样的字段上建立一个合理的索引呢? 前缀索引 前缀索引,就是以一个字段值的一部分作...
    99+
    2023-03-20
    MySQL字符串高效索引 MySQL字符串索引
  • MySQL怎么给字符串字段加索引
    假设,你现在维护一个支持邮箱登录的系统,用户表是这么定义的: create table SUser(  ID bigint unsigned primary key,  email ...
    99+
    2022-11-13
  • MySQL如何给字符串字段加索引
    这篇文章给大家分享的是有关MySQL如何给字符串字段加索引的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。假设,你现在维护一个支持邮箱登录的系统,用户表是这么定义的:create table S...
    99+
    2023-06-29
  • Mysql性能优化:如何给字符串加索引?
    导读 现代大部分的登录系统都支持邮箱、手机号码登录两种方式,那么如何在邮箱或者手机号码这个字符串上建立索引才能保证性能最佳呢? 今天这篇文章就来探讨一下在Mysql中如何给一个字符串加索引才能达到性能最佳。 本文首发于作...
    99+
    2018-08-13
    Mysql性能优化:如何给字符串加索引?
  • MySQL中怎么利用字符串做索引
    今天就跟大家聊聊有关MySQL中怎么利用字符串做索引,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在PC互联网时代,我们的很多账户都需要绑定电子邮箱...
    99+
    2022-10-18
  • 怎么使用倒排索引极速提高字符串搜索效率
    这篇文章主要讲解了“怎么使用倒排索引极速提高字符串搜索效率”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用倒排索引极速提高字符串搜索效率”吧!在Python中,如果要判断一个字符串是否...
    99+
    2023-06-15
  • mysql怎么获取字符串中的一个字符
    mysql字符串截取的语法:“substring(str, pos); substring(str, pos, len)”mysql获取字符串中一个字符的示例:字符串截取语法:substring(str, po...
    99+
    2022-10-04
  • javascript中一串有引号的字符串怎么赋值给变量
    今天小编给大家分享一下javascript中一串有引号的字符串怎么赋值给变量的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在...
    99+
    2023-07-05
  • mysql中怎么读取一个字符串长度
    mysql中读取一个字符串长度的示例:mysql> select * from test;+----+------------+-------+-----------+| i...
    99+
    2022-10-23
  • MySQL中怎么实现一个截取字符串函数
    MySQL中怎么实现一个截取字符串函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  函数:  1、从左开始截取字符串  left...
    99+
    2022-10-18
  • mysql怎么查询某个字段以逗号隔开然后其中一个字符串和查询的条件相等
    在 MySQL 中,如果要查询某个字段以逗号分隔的值,并且其中一个字符串与查询条件相等,可以使用 FIND_IN_SET() 函数。该函数用于在逗号分隔的字符串中查找指定的值。下面是一个示例 SQL 查询语句: SELECT *FR...
    99+
    2023-09-05
    mysql 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作