php发展

首页 » 常识 » 常识 » 字符串可以这样加索引,你知吗死磕MyS
TUhjnbcbe - 2025/6/13 19:15:00
白癜风资讯网 http://www.xftobacco.com/

系列文章

三、MySQL强人“锁”难《死磕MySQL系列三》

四、S锁与X锁的爱恨情仇《死磕MySQL系列四》

五、如何选择普通索引和唯一索引《死磕MySQL系列五》

六、五分钟,让你明白MySQL是怎么选择索引《死磕MySQL系列六》

相信大多数小伙伴跟咔咔一样,给字符串添加索引从未设置过长度,今天就来聊聊如何正确地给字符串加索引。

一、如何建立索引

大多数系统都会存在用户表,并且系统初始设计使用了手机号码登录的。

这是产品提出了一个需求,让系统也可以支持邮箱登录。

肯定知道的是若不给邮箱字段添加索引执行查询是会全表扫描。

此时你心里窃喜这还不简单,给邮箱字段加个索引完事呗!但要做到复杂的需求做好,简单的需求要最好,减轻一切对系统的压力。

此时的你拿起键盘就执行了altertabletable_nameaddindexidx_field(field)

有部分小伙伴不喜欢命令行创建索引,喜欢使用phpmyadmin工具来操作MySQL,那么在建立索引时有没有发现后边可以设置大小呢?

通过上边给大家展示的图片知道字符串建立索引是可以定义长度的,那么两者有什么区别。

使用命令行直接创建的索引默认是包含整个字符串。

若这样执行就制定了索引前缀长度altertabletable_nameaddindexidx_field(field(6))

一图解千愁,看一下建立的两个索引结构是什么样的。

索引一结构图

索引二结构图

从图中可以看到,指定了索引长度为6那么就只取邮箱字段的前6个字段,相对索引包含整个字符串来说每个节点存储的数据会更多。

索引那篇文章也给大家说了建立索引在合适的范围内越小越好。

万物皆两面,有坏就有好,第六期文章误选索引的因素之一就是扫描行数。

索引长度减少带来的影响就是索引基数变大,从而增加额外的扫描记录数(执行explain的row字段)。

此时要执行selectid,name,emailfrommac_userwhereemail=

qq.
1
查看完整版本: 字符串可以这样加索引,你知吗死磕MyS