MySQL之慢查询sql排查及优化 |
您所在的位置:网站首页 › mysql查询速度慢的原因有哪些 › MySQL之慢查询sql排查及优化 |
前言
sql语句优化的方式: 1.尽量少 join 2.尽量少排序 3.尽量避免 select * 4.尽量少 or 5.尽量用 union all 代替 union … (优化的方式有很多,这里就不一一举例了) 当你避免这些问题的时候,为什么sql查询还是这么慢? 排查慢查询sqlps:mysql版本为5.7 1.连接mysql mysql -uroot -p
show variables like ‘slow_query_log’;
set global slow_query_log=on;
show variables like ‘long_query_time’;
set long_query_time=0.3;
show variables like ‘slow_query_log_file’;
set global slow_query_log_file=’/usr/local/mysql/data/slow_query.log’;
mysql判断sql语句是不是慢查询,是根据语句的执行时间来衡量的,mysql会用语句的执行时间和long_query_time这个系统参数做比较,如果语句执行时间大于long_query_time,都会把这个语句记录到慢查询日志里面。long_query_time的默认值是10s,一般生产环境不会设置这么大的值,一般设置1秒。 慢查询优化找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。 1.查询sql语句执行计划 执行 EXPLAIN 命令 EXPLAIN select algorithm_id,alg_name,camera_id,status,create_time from algorithm where alg_name = ‘helmet’
2.加索引 ALTER TABLE algorithm ADD INDEX index_alg_name ( alg_name );
重新执行查询sql 3.加索引前后对比 执行第一次(秒)执行第二次(秒)执行第三次(秒)未加索引0.450.440.41加索引0.000.000.00加索引前后查询速度区别明显。 结MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 建立索引会占用磁盘空间的索引文件。 如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车 ——菜鸟教程 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |