mysql慢查询优化,mysql慢查询优化

是否记录查询日志

show variables like ‘slow_query_log‘;--是否记录未使用索引的查询

show variables like ‘log_queries_not_using_indexes‘;--开启

set GLOBAL log_queries_not_using_indexes=on;--查询时间

show variables like ‘long_query_time‘;--超过0.1秒的查询记录

set GLOBAL long_query_time=0.1;--开启

set GLOBAL slow_query_log=on;--查看日志位置

show variables like ‘slow_query_log_file‘;SELECT * from t_activity LIMIT 11;--慢查询格式

# Time: 210219 14:18:50

--执行sql主机信息

# User@Host: root[root] @ WIN-DV0VLS73PNK [192.168.1.175]

--sql执行信息

# Query_time: 0.000000 Lock_time: 0.000000 Rows_sent: 6 Rows_examined: 6

--执行时间

SET timestamp=1613715530;--内容

SELECT * from t_activity LIMIT 11;

二、日志分析

三、sql分析

使用explain查询sql的执行计划

EXPLAIN SELECT * fromt_activity;

id:1select_type: SIMPLEtable: t_activity

type:ALLpossible_keys:NULL

key: NULLkey_len:NULLref:NULLrows:6

20210220121300451928.png

20210220121300810742.png

const 常数查找,一般主键唯一索引;

eq_reg 范围查找,主键或唯一索引范围查找;

ref 连接的查找,基于某一个索引的查找;

range 基于索引的范围查找;

index 索引的扫描;

all 表扫描;

四、优化

1、max()优化

SELECT MAX(create_time) fromt_activity;--创建索引

CREATE INDEX idx_create_time on t_activity(create_time);

2、count()优化

count(*) 会包含空,count(id)不包含空。也就是  count 一个可为空的字段时,只记录不为 null 的总合。

select

COUNT(CHAPTER_STATE !=‘300225‘) ,COUNT(CHAPTER_STATE in (‘300221‘,‘300224‘,‘300226‘))from t_course_chapter_info;

3、子查询优化

通常情况下,需要把子查询优化为join查询,但是优化是要注意是否是一对多的关系,注意重复数据。

4、limit 优化

1)、使用有索引的列或者主键进行order by 操作

2)、记录上次返回的主键,在下次查询是使用

四、索引优化

如何选择合适的列建立索引:

1.在where从句,group by 从句,order by 从句,on 从句中出现的列

2.索引字段越小越好

3.离散度大的列放到联合索引的前面 ,count(字段)越高离散度越大。

mysql慢查询优化

标签:字段   使用   连接   bsp   info   min   idt   chap   pre

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://www.cnblogs.com/zmjc/p/14416561.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值