文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mysql性能优化:如何给字符串加索引?

2018-08-13 10:36

关注

Mysql性能优化:如何给字符串加索引?

导读

 

前缀索引

   alter table user add index index1(email(7));

 

前缀索引和普通索引比较

  alter table user add index index1(email);

  alter table user add index index2(email(7));

 

  select * from user where email="chenmou1995@xxx";

 

【1】普通索引的执行过程

  1. 从index1索引树找到满足索引值是chenmou1995@xxx的这条记录,取得id=2的值;

  2. 到主键上查到主键值是id=2的行,判断email的值是正确的,将这行记录加入结果集;

  3. index1索引树上刚刚查到的位置的下一条记录,发现已经不满足email=chenmou1995@xxx的条件了,循环结束。

这个过程中,只需要回主键索引取一次数据,所以系统认为只扫描了一行

 

【2】前缀索引的执行过程

  1. 从index2索引树找到满足索引值是chenmou的记录,找到的第一个是id=1;

  2. 到主键上查到主键值是id=1的行,判断出email的值不是chenmou1995@xxx,这行记录丢弃;

  3. 取index2上刚刚查到的位置的下一条记录,发现仍然是chenmou,取出id=2,再到ID索引上取整行然后判断,这次值对了,将这行记录加入结果集;

  4. 重复上一步,直到在idxe2上取到的值不是chenmou时,循环结束。

  在这个过程中,要回主键索引取4次数据,也就是扫描了4行。

 

 

如何建立最佳性能的前缀索引

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

 

  倒序存储

  如果你存储身份证号的时候把它倒过来存,每次查询的时候,你可以这么写:

   select field_list from t where id_card = reverse("输入的身份证号");

  由于身份证号的最后6位没有地址码这样的重复逻辑,所以最后这6位很可能就提供了足够的区分度。当然了,实践中你不要忘记使用count(distinct)方法去做个验证。

 

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

  select id,name from user where email="chenmou1995@xxx";

 

总结

  1. 如果字符串长度很短,建议直接用全部作为索引。

  2. 使用前缀索引注意分析区分度,区分度越高越好。

  3. 使用前缀索引需要考虑覆盖索引失效的问题。

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯