首页 > 数据库 >MySQL 字符串索引和前缀索引

MySQL 字符串索引和前缀索引

时间:2024-11-06 19:41:46浏览次数:2  
标签:count 前缀 email 索引 MySQL id card

前缀索引

创建前缀索引

alter table t add index idx_email(email);
alter table t add index idx_email(email(6));

使用前缀索引,定义好长度,可以做到即节省空间,又不用额外增加太多查询成本。

区分度

建立索引时,区分度(不重复的值)越高越好。

select count(distance email) from t;
select 
 count(distance left(email, 4)) as L4,
 count(distance left(email, 5)) as L5,
 count(distance left(email, 6)) as L6,
 count(distance left(email, 7)) as L7,
from t;

前缀索引对覆盖索引的影响

使用前缀索引下面语句就无法使用覆盖索引

selec id, email from t where email = 'xxx';

前缀区分度不够好

倒序存储

select * from t where id_card  = reverse('xxxx')

使用 hash 字段

-- 新增字段,新增索引 
-- crc32()
alter table t add id_card_crc varchar(18), add index(idx_id_card_crc);
select * from t where id_card_crc = crc32('xxxx') and id_card = 'xxxx';

倒序存储和hash字段的索引不支持范围查询,只支持等值查询。

标签:count,前缀,email,索引,MySQL,id,card
From: https://www.cnblogs.com/liaozibo/p/18530920

相关文章

  • centos7安装mysql80
    安装1.添加MySQL8.0的官方YUM仓库MySQL8.0没有默认包含在CentOS7的官方仓库中,因此需要手动添加MySQL的官方仓库。yuminstallwget-ywgethttps://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpmrpm-ivhmysql80-community-release-el7-11.n......
  • mysql5安全审计
    安装插件插件需要严格与数据库版本适配,不然安装过程中会出现问题解压插件cd插件所在路径unzipaudit-plugin-mysql-5.7-1.1.7-921-linux-x86_64.zip#查看mysql默认插件目录mysql>SHOWGLOBALVARIABLESLIKE'plugin_dir';#将插件移动到mysql默认插件目录下cp......
  • mysql 连接查询之内连接、外连接 代码示例
    mysql连接查询可以分为内连接与外连接,外连接又分为左外连接和右外连接,左外连接可以简称为左连接,右外连接可以简称为右连接表数据如下学生表:student学生课程:student_course内连接:将两表满足条件的记录进行笛卡尔乘积--以下3个查询等效,均为内连接select*fromstudentinn......
  • mysql根据一个表的数据更新另一个表数据的SQL写法
    ql中更新表数据的通用方法包括:使用join语句,匹配两个表并更新目标表的指定列;使用子查询,获取源表中匹配行的值并更新目标表;使用merge语句(mysql8.0及更高版本),合并两个表并按条件更新或插入数据。 根据一个表的数据更新另一个表数据的SQL写法最近大家都在看MySQLupda......
  • MySQL核心业务大表归档过程
       记录一下2年前的MySQL大表的归档,当时刚到公司,发现MySQL的业务核心库,超过亿条的有7张表,最大的表有9亿多条,有37张表超过5百万条,部分表行数如下:        在测试的MySQL环境 :   pt-archiver工具,测试200的dev实例,5800万条数据,纯删除1000万条数据,花费......
  • Mysql:常见问题
    字段越多,查询越慢吗?为什么字段越多,查询通常会变慢。具体原因涉及数据库内部的一些机制:数据读取:每个查询都需要从硬盘或者内存中读取数据。字段越多,每行的数据量越大,意味着更多的数据需要被读取到内存中进行处理。这增加了IO操作次数和时间。内存使用:字段越多,查询的结果集......
  • MySQL 索引的底层实现原理与优化策略
    在数据库中,索引是提升查询性能的关键工具。MySQL中的索引机制可以显著加快数据检索速度,尤其在数据量庞大的情况下,合理使用索引可以使得原本耗时的操作变得高效。然而,滥用或错误地使用索引也可能对性能产生负面影响。本文将深入探讨MySQL索引的底层实现原理、常用类型及其......
  • 实践中如何优化 MySQL:深入剖析与策略分享
    MySQL作为一款广泛应用的关系型数据库管理系统,在企业级应用和互联网服务中扮演着重要的角色。然而,随着业务规模的增长和数据量的增加,如何有效地优化MySQL性能,确保系统在高并发、大数据量的环境下仍能高效运行,成为开发者和数据库管理员的重要课题。本文将深入探讨MySQL......
  • 150道MySQL高频面试题,学完吊打面试官--InnoDB索引与MyISAM索引实现的区别+一个表中如
    前言本专栏为150道MySQL大厂高频面试题讲解分析,这些面试题都是通过MySQL8.0官方文档和阿里巴巴官方手册还有一些大厂面试官提供的资料。MySQL应用广泛,在多个开发语言中都处于重要地位,所以最好都要掌握MySQL的精华面试题,这也是面试官最喜欢问的,现在面试官在面试的时候更关......
  • ACWING 503. 借教室 二分+前缀和
    题目描述输入格式输出格式数据范围输入样例:432543213324424输出样例:-12题目分析 每个订单都是对第s到t这个区间进行操作,所以可以用差分和前缀来实现对这段区间的快速修改。在1-m个订单中一定会有最后一个能被处理的订单,因此可将1-m分为两个区......