首页 > 数据库技术 > 详细

18.使用 explain 优化 SQL 语句(select 语句)的基本流程

时间:2020-03-21 17:30:51      阅读:53      评论:0      收藏:0      [点我收藏+]

18.1 用命令抓取慢 SQL 语句,然后用 explain 命令查看查询语句是否走的索引查询

1 在数据库命令行里面操作

mysql> show full processlist;
+----+------+-----------+--------+---------+------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+--------+---------+------+-------+-----------------------+
| 13 | root | localhost | oldboy | Query | 0 | NULL | show full processlist |
+----+------+-----------+--------+---------+------+-------+-----------------------+
1 row in set (0.00 sec)?

 


2 在 linux 命令行操作

[root@mysql 3306]# mysql -u root -ppcwangjixuan -S /mysqldata/3306/mysql.sock -e "show fullprocesslist"|grep -vi "sleep"
Id UserHostdb Command Time StateInfo
15 root localhost NULL Query 0 NULL show full processlist?

 

18.2 设置配置参数记录慢查询语句

log_query_time = 2 <==查询时间超过 2 秒,记录到 log 里
log_queries_not_using_indexs <==没有走索引的语句,记录到 log 里
log-slow-queries = /data/3306/slow.log?

 

18.3 对抓取到的慢查询语句用 explain 命令检查索引执行情况

例如:

explain select * from test where name=’oldboy’\G;?

 

18.4 对需要建索引的条件列建立索引

大表不能高峰值建立索引,300 万记录

18.5 切割慢查询日志,去重分析后发给大家

关于 mysql 的配置文件参数设置(my.cnf)

[mysqld]
long_query_time = 1
log-slow-queries = /data/3306/slow.log
log_queries_not_using_indexs
关于日志切割脚本
mv /data/3306/slow.log /opt/$(date +%F)_slow.log
mysqladmin –uroot –ppcwangjixuan –S /data/3306/mysql.sock flush-logs

 

18.使用 explain 优化 SQL 语句(select 语句)的基本流程

原文:https://www.cnblogs.com/hackerlin/p/12539889.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!