Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

mysql优化1 PDF 下载


分享到:
时间:2020-05-05 09:43来源:http://www.java1234.com 作者:小锋  侵权举报
mysql优化1 PDF 下载
失效链接处理

mysql优化1 PDF 下载

本站整理下载:
 
相关截图:
 
主要内容:

一:
1 .查询是否开启慢查询日志
show variables like 'slow_query_log';
2 设置慢查询日志位置
set global slow_query_log_file= 'D:/mysql/sql_log/mysql-slow.log';
3 记录未使用索引的查询
set global log_queries_not_using_indexes=on;
4 将查询时间大于1s 的查询写入日志
set global long_query_time=1;
 
二. max() count() 可以为字段建立覆盖索引 比如
SELECT count(release_year='2006' OR NULL) AS '2006年电影数量',count(release_year='2007' OR NULL) as '2007年电影数量' from film ;
 
三.子查询优化:子查询可以改为jion的关联查询语句。
Select  t.id  from  t  where t.id in (select t1.id from t1); //子查询
select  DISTINCT t.id from t JOIN t1 on t.id=t1.id // join 关联查询
四. Group by 语句的优化
4.1 优化前
EXPLAIN  SELECT actor.first_name,actor.last_name, count(*) 
                                     from film_actor INNER JOIN actor using(actor_id)
GROUP BY film_actor.actor_id ;
4.2 优化后
Explain  Select actor.first_name,actor.last_name  , c.cnt from actor inner join (
Select actor_id,count(*)  as cnt from film_actor group by actor_id
) as c using(actor_id);
五  Limit 查询的优化
5.1 优化前
Select film_id, description  from  film order by title limit 50 ,5; 
5.2 优化后
优化方式一:使用有索引的列或者主键进行order by 操作
Select  film_id ,description from film order by film_id limit 50,5;
优化方式二: 记录上次返回的主键,在下次查询时使用主键过滤。
避免了数据量大时扫描过多的记录
explain  select film_id,description from film WHERE  film_id>50 and film_id<=55 ORDER BY film_id limit 1,5 \G;
六. 索引的优化
如何选择合适的列建立索引?
1.在where 从句 group by 从句,order by 从句,on 从句中出现列 最好建(覆盖索引)
2.索引字段越小越好。
3.离散度大的列放到联合索引的前面
例子:
SELECT * from payment where staff_id=2 and customer_id=584;
是 index (staff_id,customer_id) 好?还是index(customer_id,staff_id) 好呢?
由于customer_id 的离散度更大,所以使用index(customer_id,staff_id)
判断离散度的语句.
Select  count (distinct customer_id),count(distinct staff_id) from payment;
Count(customer_id )=599  count(staff_id) =2  由于599>2 所以选择customer_id
索引的优缺点:
增加索引可以加快查询效率但是会影响 insert  update  delete
索引的优化:删除重复以及冗余索引

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐