• 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) 
  • 相关阅读:
    jquery堆栈与队列
    类数组转成数组对象
    python基础教程总结8——特殊方法,属性,迭代器,生成器,八皇后问题
    python基础教程总结7——异常
    python基础教程总结6——类
    python基础教程总结5——函数
    python基础教程总结4—基本语句
    python——动态类型
    python基础教程总结3—字典
    python基础教程总结2——字符串
  • 原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/11928974.html
Copyright © 2020-2023  润新知