| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 大数据 -> 读mysql45讲-字符串加索引 -> 正文阅读 |
|
|
[大数据]读mysql45讲-字符串加索引 |
|
假设需要给一个邮箱字段添加索引,邮箱通常是存储为字符串类型的。mysql是支持前缀索引的,也就是也可以将邮箱的前几个字符作为索引,如果不设置长度,则默认为整个字段。
前一个是将整个字段都作为索引,后一种则是将name的前两个字符作为索引;后一种的索引结构因为只有name的前两个字符,所以占用的内存更小,这是前缀索引的优势,但也有不好的地方。
如果是使用的是前一种索引:
如果使用的是后一种索引:
可以看到,两者的区别就是满足条件的不一样;因为后一种索引的字段短了点,所以可能满足条件的记录就多一点,就需要多次判断,这样回表的次数会变多。 那如果后一种索引结构的长度再长一点,变为3,那也可以满足这次的查询条件,所以关键在于,如何找到这个合适的长度。 在建立索引的时候,可以先查询当前表的name字段中所有值的分布情况。然后截取前几个字符,查看重复的情况。
之前查出所有name假设为100个,L4是70个,L5是80个,L6是90个,L7是96个;那如果为了准确率是90%以上,那就索引的长度就可以截取前6个。 如果查询的sql是
这个sql和前面的sql的区别就是查询字段少了address;根据覆盖索引,那这个sql就不需要再回表根据id去查询adress的值;
如果在对身份证使用前缀索引的时候,就会有一些问题,因为正常一个省或一个城市的身份证的开头几位都是相同的,而且年份和月份也都是都很多相同的,所以对身份证号码字段使用前缀索引的话,就需要长度超过12位以上的才行,但是那用占用的空间也会很大。 倒叙存储 hash 这两种方法都不支持范围查询,只能做等值查询。它们的区别,主要体现在以下三个方面:
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/21 6:17:23- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |