记一次MySQL字符串索引优化方案

本文探讨了在MySQL中优化字符串索引的策略,包括建立前缀索引以节省空间,倒序存储以提高区分度,以及使用hash字段降低查询成本。通过案例分析,指出前缀索引可能增加查询次数,倒序存储和hash字段不支持范围查询,但能节省空间。总结了各种方法的优缺点,帮助提升查询效率。
摘要由CSDN通过智能技术生成

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等

字符串建立索引的优化

1. 建立前缀索引

假设建立一个支持邮箱登录的用户表,对于邮件字段来说,可以有以下几种建立索引的方式:

①. 直接对整个字符串建立索引

alter table SUser add index index1(email);

②. 对整个字符串的前一部分建立索引 - 前缀索引

alter table SUser add index index2(email(6));

方式 2 相较于 方式 1 来说,利用前缀索引,占用的空间更小。但有可能造成性能的损失,读取数据的次数变多。

假设在 user 表中存在2986706524@gmail.com, 2986706524@qq.com , 2986706524@xxx.com, 三条记录。

有这样一条语句 select id,name,email from SUser where email=‘2986706524@xxx.com’;

使用 index1 索引时,流程如下:

  1. 在 index1 中,找到名字是2986706524@xxx.com 的记录,获取 ID.
  2. 在主键索引上对应 ID的行,判断 email 是否正确,将记录加入结果集。
  3. 接着取 index1 索引的下一条记录,发现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值