MySQL系列-优化之like关键字 创建索引
原文: https://blog.csdn.net/ufo___/article/details/81164996
MySQL系列-优化之覆盖索引: https://blog.csdn.net/UFO___/article/details/81162087
索引效果比对: https://blog.csdn.net/weixin_39800144/article/details/81510785
like关键字我们也是经常使用,用来模糊查询用户名,那么like如何进行优化呢?这篇博客就简单讨论一下like的优化,但是真实的生产环境要比这复杂多了。
1.%号不放最左边
先创建表和索引。

然后进行查询【explain select * from tb where name like 'e%';】

可以看到我们的查询使用上了idx_name这个索引,因为我们的 'e%' 规定了只要以字符 'e' 开头的name,所以MySQL使用上了我们建立的索引。
把sql修改一下在进行查询【explain select * from tb where name like 'e%y_t';】

同样使用上了建立的索引。
再来修改一下【explain select * from tb where name like '%e%';】

可以看到这个时候就无法使用索引了,开头是不确定的,MySQL也无法进行优化了,只能扫描表了。
2.使用覆盖索引
如果业务需要%就放开头我们也没办法,一般情况需求都是这样的,毕竟优化还是为业务服务的。
这个时候可以考虑使用覆盖索引(关于覆盖索引:MySQL系列-优化之覆盖索引),假设业务需要通过name来获取用户的age的话,我们可以对name、age字段建立复合索引。
创建复合索引idx_name_age:

执行sql【explain select name,age from tb where name like '%e%';】

可以看到,查询是覆盖索引的,起码比全表扫描要好。
如果需要更多字段的数据而不单单是age的话,可以进行两次查询,第一次通过name来获取id(这一步是索引扫描),第二步拿获取来的数据在进行id匹配查询(这一步效率很高,ref或者const)。
MySQL系列-优化之like关键字 创建索引的更多相关文章
- mysql数据库优化课程---5、要索引和不要索引的区别是什么
mysql数据库优化课程---5.要索引和不要索引的区别是什么 一.总结 一句话总结: 索引速度快,就是查表的时候,操作的话设置索引就好了 1.数据库设计的时候不允许字段为null的好处是什么? nu ...
- Mysql 性能优化6【重要】 索引优化
b tree索引 myisam 是通过物理位置来查找引用行的 innodb 是通过主键来查找引用行的 索引优化策略 b-tree索引对数据长度有限制,所以text等比较长的列可以建立前缀索引 btre ...
- Mysq索引优化(什么情况创建索引,什么情况不创建索引)
一.以下情况需要创建索引 1.主键自动建立唯一索引 2.频繁作为查询条件的字段应该创建索引 3.查询中与其他表关联的字段,外键关系建立索引 4.单键/组合索引的选择问题,组合索引性价比更高 5.查询中 ...
- MySQL如何优化GROUP BY :松散索引扫描 VS 紧凑索引扫描
执行GROUP BY子句的最一般的方法:先扫描整个表,然后创建一个新的临时表,表中每个组的所有行应为连续的,最后使用该临时表来找到组 并应用聚集函数.在某些情况中,MySQL通过访问索引就可以得到结果 ...
- mysql—数据库优化——如何选择合适的索引
索引的分类: 普通索引: 唯一索引: 主键索引:特殊的唯一索引,唯一且不能有null值: 全文索引:全文索引用来对表中的文本域(char, varchar, text)进行索引 全文索引针对myisa ...
- mysql性能优化-慢查询分析、优化索引和配置
一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1) max_connec ...
- [转]mysql性能优化-慢查询分析、优化索引和配置
一. 优化概述 MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候.磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在 ...
- mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)
mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...
- mysql性能优化-慢查询分析、优化索引和配置【转】
一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1) max_connec ...
随机推荐
- U启动制作U盘启动盘详细教程
第一步 打开u启动装机版,将准备好的u盘插入电脑usb接口并静待软件对u盘进行识别,由于此次u启动采用全新功能智能模式,可为u盘自动选择兼容性强与适应性高的方式进行制作,相较过去版本可省去多余的选择操 ...
- Mysql中contact、group_concat、concat_ws、repeat
一.CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. mysql> select concat('11','22',' ...
- python列表、集合、元祖、字典推导式
a = [1, 2, 3, 4, 5, 6, 7, 8]l=[i**2 for i in a if i**2>=16] #列表推导式+if判断print(l)print(type(l)) b={ ...
- centos7配置hadoop集群
一:测试环境搭建规划: 主机名称 IP 用户 HDFS YARN hadoop11 192.168.1.101 hadoop NameNode,DataNode NodeManager hadoop1 ...
- 源码安装nginx 出现fatal error: pcre.h: 没有此文件或者目录
原因是用了pcre2 重新下载pcre再编译即可.
- 关于jvm钩子 Runtime.getRuntime().addShutdownHook
转自: http://www.cnblogs.com/nexiyi/p/java_add_ShutdownHook.html 在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来,这时候 ...
- SharePoint REST API - 基本操作(二)
博客地址:http://blog.csdn.net/FoxDave 上一节讲了SharePoint REST API的一些基本操作,本节将继续介绍一些关于SharePoint REST API的内容. ...
- HDU - 2819 Swap(二分图最大匹配)
Given an N*N matrix with each entry equal to 0 or 1. You can swap any two rows or any two columns. C ...
- Java不同类型字符转换String/int/Float/////
1.int & String int i=5678;String s=""; int->String: s=i+"";或 s=String.val ...
- Example of Abstract Class
The Vehicle class has abstract members that must be implemented by the Car class or any other class ...