MySQL之慢日志记录、执行计划、分页

1、慢日志记录

 

slow_query_log = OFF                                                 #是否开启慢日志记录
long_query_time = 2                                                  #时间限制,超过此时间,则记录
slow_query_log_file = C:Softwaremysql56dataMarkben-slow.log      #日志文件
log_queries_not_using_indexes = OFF                                  #为使用索引的搜索是否记录 

配置:

1 基于文件 

#查看当前配置信息
show variables like '%query%';

#修改当前配置信息
set global 变量名 = 值

2 配置文件

新建一个配置文件比如my.conf,把配置信息写在配置文件中:

 

配置文件路径为: C:Softwaremysql56dataMarkben-slow.log 

当mysqld在首次启动的时候,就会开启慢日志查询:

mysqld --defaults-file='C:Softwaremysql56my-default.ini;

注意:修改配置文件之后,需要重启服务(修改配置文件之前需要备份)

2、执行计划

3、分页(*****)

 select * from userinfo3 limit 20,10;

问题:翻的页数也大运行越慢,比如写成limit 200000,10 会先把扫前200000条数据,然后再往后查10条数据,这会浪费时间

解决方案:

1 当页数达到一定程度时,禁止查看

2 去索引表中扫:(不推荐)

select * from userinfo3 where id in(select id from userinfo3 limit 200000,10);  #这种方法时间也快不了多少

3 推荐方案

记录当前页的最大ID or 最小ID,最大ID用于往下翻页,最小ID用于往上翻页

3.1 页面只有上一页下一页

# max_id
# min_id
#下一页:
select * from userinfo3 where id > max_id limit 10;

#上一页:
select * from userinfo3 where id < min_id order by id desc limit 10;

3.2 上一页和下一页之间还有页码(192 193 [196] 197 198 199) 

select * from userinfo3 where id in (
                    select id from (select id from userinfo3 where id > max_id limit 30) as N order by N.id desc limit 10) 
原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/11928974.html