mysql高级(查询截取分析)
Posted 木心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql高级(查询截取分析)相关的知识,希望对你有一定的参考价值。
目录:
1、索引失效
1)全值匹配我最爱:查询条件于符合索引顺序
2)最佳左前缀法则:如果索引了多列,要遵守最左前缀法则,即查询where子句从索引的最左前列开始并且不跳过索引中的列(带头大哥要有,中间兄弟不能断)
3)不在索引列上做任何操作(计算、函数、自动或手动类型转换),因为这样会导致索引失效而转向全表扫描
4)存储引擎不能使用索引中范围条件右边的列
比如:创建符合索引 idx_staffs_name_age_pos(name, age, pos), 如果查询条件是 where name=‘xxx‘ and age > 10 and pos=‘xxx‘, 则因为 age > 10 是范围查询,导致idx_staffs_name_age_pos后面的索引列用不上索引(age这个索引列还是能用上的)。
5)尽量使用覆盖索引(只访问索引查询,索引列和查询列一致),少用 select *
6)mysql在使用不等于(!=, <>)时无法使用索引导致全表扫描
7)is null, is not null 也无法使用索引
8)like 以 ‘%xxx‘ 通配符开头,导致索引失效,(如果like ‘xxx%‘,查询ref=range)
问题:解决like ‘%xxx%‘时索引不被使用? 解决:使用覆盖索引
9)字符串不加单引号索引失效
10)少用or,用它来连接时会索引失效
2、SQL性能优化四步
1)慢查询的开启并捕获
2)explain+慢SQL分析
3)show profile 查询 SQL 在 mysql 服务器里面的执行细节和生命周期情况
4)SQL 数据库服务器的参数调优
3、查询优化--小表驱动大表
4、查询优化--order by关键字优化
5、查询优化--group by关键字优化
---
以上是关于mysql高级(查询截取分析)的主要内容,如果未能解决你的问题,请参考以下文章
大数据技术之_29_MySQL 高級面试重点串讲_02_Mysql 简介+Linux 版的安装+逻辑架构介绍+性能优化+性能分析+查询截取分析+分区分库分表简介+锁机制+主从复制
《MySQL高级篇》七性能分析工具的使用(慢查询日志 | EXPLAIN | SHOW PROFILING | 视图分析 )