mysql的慢查询实战+sql优化
背景:使用A电脑安装mysql,B电脑通过xshell方式连接,数据内容我都已经创建好,现在我已正常的进入到mysql中
步骤1:设置慢查询日志的超时时间,先查看日志存放路径查询慢日志的地址,因为有慢查询的内容,就会到这个日志中:
show global variables like "%slow%";
2.开启慢查询日志
set global slow_query_log=on;
3.查看慢查询日志的设置时间,是否是自己需要的
show global variables like "%long%";
4.如果不是自己想的时间,修改慢查询时间,只要超过了以下的设置时间,查询的日志就会到刚刚的日志中,我设置查询时间超过1S就进入到慢查询日志中
set global long_query_time=1;
5.大数据已准备,进行数据的查询,xshell最好开两个窗口,一个查看日志,一个执行内容
Sql查询语句:select sql_no_cache * from employees_tmp where first_name='Duangkaew' and gender='M'
发现查数据的总时间去掉了17.74S
查看日志:打开日志
标记1:执行的sql语句
标记2:执行sql的时间,我的是10点52执行的
标记3:使用那台机器
标记4:执行时间,query_tims,查询数据的时间
标记5:不知道是干嘛的
标记6:执行耗时的sql语句,我在想我1的应该是截取错了!但是记住最后一定是显示耗时是因为执行什么sql造成的
6.执行打印计划,主要是查看是否使用了索引等其他内容,主要就是在sql前面加上explain 关键字
explain select sql_no_cache * from employees_tmp where first_name='Duangkaew' and gender='M';
描述extra中,表示只使用了where条件,没有其他什么索引之类的
7.进行sql优化,建一个fist_name的索引,索引就是将你需要的数据先给筛选出来,这样就可以节省很多扫描时间
create index firstname on employees_tmp(first_name);
注:创建索引时会很慢,是对整个表做了一个复制功能,并进行数据的一些分类(我猜是这样,所以会很慢)
8.查看建立的索引
show index from employees_tmp;
9.在执行查询语句,查看语句的执行时间
select sql_no_cache * from employees_tmp where first_name='Duangkaew' and gender='M'
发现时间已经有所提升了,其实选择索引也不一开始就知道,我们在试试使用性别,gender进行索引
10.删除已经有的索引,删除索引:
drop index first_name on employees_tmp;
11.创建性别的索引(性别是不怎么好的索引方式,因为有很多重复数据)
create index index_gendar on employees_tmp(gender);
在执行sql语句查询数据,查看查询执行时间,没有创建比较优秀的索引,导致查询时间还变长了,
为嘛还变长了,这个我没有弄懂
12.我们在试试使用创建组合索引,使用性别和姓名
alter table employees_tmp add index idx_union (first_name,gender);
在执行sql查看sql数据的执行时间
select sql_no_cache * from employees_tmp where first_name='Duangkaew' and gender='M'
速度提升了N多倍啊
查看创建的索引
show index from employees_tmp;
索引建的好真的一个好帮手,建不好就是费时的一个操作
目前还不知道为什么建立性别的索引会这么慢
相关文章
- Mysql-SQL优化-统计某种类型的个数
- 【MySQL高级】SQL优化
- 【MySQL高级】Mysql并发参数调整及常用SQL技巧
- Oracle数据库:oracle数据表格dmp,sql,pde格式导入与导出,视图、序列、索引等对象的导出,oracle完结,后续开启mysql的学习
- MySQL:优化SQL语句的步骤
- [转]mysql大表更新sql的优化策略
- MySQL——company、dep、person SQL查询
- MySQL存储过程高级SQL语句总结
- windows下bat批处理执行sql语句__Mysql
- MySQL-数据库多表关联查询太慢,如何进行SQL语句优化
- Mysql学习---视图/触发器/存储过程/函数/执行计划/sql优化 180101
- mysql 分页sql
- MySQL与OLAP:分析型SQL查询最佳实践探索
- mysql数据库SQL优化
- SQL Server SSPI handshake failed报错,sql server修改windows账户密码的影响,sql server订阅发布客户端访问一直报错
- (1.10)SQL优化——mysql 常见SQL优化
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- mysql导入数据,涉及到时间转换,乱码问题解决
- SQL Server中用Case When Then多条件判断sql
- MySQL基本SQL语句2(DML)