Python MySQL数据库的基本使用补充

  1. 慢日志
    1. 慢日志的大概功能(记录以下条件的SQL语句)
      1. SQL语句执行时间 > 10
      2. 未命中索引...等
    2. 如何配置慢日志
      1. 在内存中配置(直接在CMD窗口执行)
        show variables like '%query%'  然后通过显示出来的列表修改想要的变量
        set global 变量名 = 值 ,如以下几种:
        1.  set global slow_query_log=ON/OFF            #  是否开启慢日志
        2. set global long_query_time=2                       #  超过此时间,则记录
        3. slow_query_log_file =D:XXXX                      #  日志文件路径
        4. log_queries_not_using_indexes = OFF        #  如果开启,就判断SQL语句是否命中索引(这个要用show variables like '%queries%'来查看 )
      2. 使用配置文件配置(存放在硬盘中)
        1. 创建一个配置文件,如my.ini在里面写入  set global 变量名 = 值 ......
        2. 使用配置文件:mysqld --defaults-file = 'D:\XXX.my.ini'
        3. 修改配置文件时,记得备份然后重新启动服务
  2. 分页:
    1. select * from t1 limit 20,10;      #  翻的页数越多,速度越慢,因为他会扫描之前所有的方式
      1. 解决方法:
        1. 不让看~~~ (最多让你看XX页)
        2. 去索引表查找
          select * from t1 where id in (select id from t1 limit 9999,9)
          用覆盖索引去索引表找,但速度也快不了多少
        3. 方案

          1. 记录当前页最大或最小ID,比如select * from t1 where id >999 limit 9;  通过Python调整数据
            #  ID是不连续的,所以无法直接使用ID范围进行查找
          2. 页面只有上一页,下一页(假设每页有10个数据)
            max_id(数据的ID不是页面的ID)
            min_id
            下一页
            select * from t1 where id > max_id limit 10;
            上一页
            select * from t1 where id < min_id order by id desc limit 10;
          3. 上一页 97 98 99 [100] 101 102 [103] 下一页 (每页10个数据,从100页跳刀103页)
            select * from where id in (select id from (select id from t1 where id > max_id limit 30) as N order by N.id desc limit)
posted @ 2020-03-16 16:03  otome  阅读(98)  评论(0编辑  收藏  举报