美文网首页
11讲怎么给字符串字段加索引

11讲怎么给字符串字段加索引

作者: carlclone | 来源:发表于2019-06-26 13:18 被阅读0次

1 案例: 给邮箱登录字段加索引
2 部分前缀作为索引 add index index2(email(6)); 只取6个字节
3 使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本。
4 通过区分度来确定某个字符串字段的长度选取
5 select count(distinct email) as L from SUser; 获取不重复的数量
6 mysql> 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 SUser; 获取前几个字节不重复的数量
7 可以考虑损失百分之95的区分度
8 使用前缀索引则无法用到覆盖索引 , 因为需要回表判断
9 身份证号的案例 , 18位 , 前6位是地址码 , 区分度低 , 可以通过倒序存储 , 因为后面的数字区分度高一些 ,
10 第二种方法是使用hash , 新增一个字段存整数哈希 , 变成了4个字节 , 节省空间
11 都不能进行范围查询
12 对这两种解决方案的对比
它们的区别,主要体现在以下三个方面:

  1. 从占用的额外空间来看,倒序存储方式在主键索引上,不会消耗额外的存储空间,而hash字段方法需要增加一个字段。当然,倒序存储方式使用4个字节的前缀长度应该是不够的,如果再长一点,这个消耗跟额外这个hash字段也差不多抵消了。
  2. 在CPU消耗方面,倒序方式每次写和读的时候,都需要额外调用一次reverse函数,而hash字段的方式需要额外调用一次crc32()函数。如果只从这两个函数的计算复杂度来看的话,reverse函数额外消耗的CPU资源会更小些。
  3. 从查询效率上看,使用hash字段方式的查询性能相对更稳定一些。因为crc32算出来的值虽然有冲突的概率,但是概率非常小,可以认为每次查询的平均扫描行数接近1。而倒序存储方式毕竟还是用的前缀索引的方式,也就是说还是会增加扫描行数。

13 reverse() 函数 crc32()函数
14 思考题: 如果你在维护一个学校的学生信息数据库,学生登录名的统一格式是”学号@gmail.com", 而学号的规则是:十五位的数字,其中前三位是所在城市编号、第四到第六位是学校编号、第七位到第十位是入学年份、最后五位是顺序编号。系统登录的时候都需要学生输入登录名和密码,验证正确后才能继续使用系统。就只考虑登录验证这个行为的话,你会怎么设计这个登录名的索引呢?

我会采用hash的方式 , 直接将学号字符串存为整数 , 这也是一种最简单的哈希吧

相关文章

  • 怎么给字符串加索引

    怎么给字符串加索引 比如说,要给邮箱这样的字段加索引,这样长字符串加索引会有什么样的问题? 前缀索引,如果长度长,...

  • 11讲怎么给字符串字段加索引

    1 案例: 给邮箱登录字段加索引2 部分前缀作为索引 add index index2(email(6)); 只取...

  • 11 | 怎么给字符串字段加索引?

    MySQL 是支持前缀索引的,也就是说,你可以定义字符串的一部分作为索引。默认地,如果你创建索引的语句不指定前缀长...

  • 11 | Mysql怎么给字符串字段加索引?

    [TOC]现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引,是我们今天要讨论的问题。 假设...

  • 丁奇-MySQL实战读书笔记11

    怎么给字符串字段加索引? 1:直接创建完整索引,这样可能比较占用空间; 这种方式最简单,如果性能没问题,我会这么创...

  • MySQL实战 | 11 怎么给字符串字段加索引?

    两种: 全字段索引 前缀索引 举例: 可以对 email 字段创建全字段索引,或者前缀索引。 区别 1、全字段索引...

  • 【MySQL】11|给字符串字段加索引

    现在,几乎所有的系统都支持使用邮箱登陆,那么怎样在邮箱这样的字段上创建合理的索引。 假设用户表是这么定义的: 由于...

  • 数据库常用操作

    1、给mysql表加字段 2、给表加主键 3、给表加索引

  • 字符串字段加索引

    MySQL支持前缀索引 如果一个字符串比较长可以考虑: 1.直接给完整字段加索引,可能索引占用内存比较多 2.加前...

  • 为何MySQL会选错索引

    在实际的生产环境中,给MySQL的字段加索引让查询的效率更高,我们往往会给MySQL的表字段加索引。MySQL具体...

网友评论

      本文标题:11讲怎么给字符串字段加索引

      本文链接:https://www.haomeiwen.com/subject/wdcccctx.html