zoukankan      html  css  js  c++  java
  • 18.使用 explain 优化 SQL 语句(select 语句)的基本流程

    18.1 用命令抓取慢 SQL 语句,然后用 explain 命令查看查询语句是否走的索引查询

    1 在数据库命令行里面操作

    mysql> show full processlist;
    +----+------+-----------+--------+---------+------+-------+-----------------------+
    | Id | User | Host | db | Command | Time | State | Info |
    +----+------+-----------+--------+---------+------+-------+-----------------------+
    | 13 | root | localhost | oldboy | Query | 0 | NULL | show full processlist |
    +----+------+-----------+--------+---------+------+-------+-----------------------+
    1 row in set (0.00 sec)​


    2 在 linux 命令行操作

    [root@mysql 3306]# mysql -u root -ppcwangjixuan -S /mysqldata/3306/mysql.sock -e "show fullprocesslist"|grep -vi "sleep"
    Id UserHostdb Command Time StateInfo
    15 root localhost NULL Query 0 NULL show full processlist​

    18.2 设置配置参数记录慢查询语句

    log_query_time = 2 <==查询时间超过 2 秒,记录到 log 里
    log_queries_not_using_indexs <==没有走索引的语句,记录到 log 里
    log-slow-queries = /data/3306/slow.log​

    18.3 对抓取到的慢查询语句用 explain 命令检查索引执行情况

    例如:

    explain select * from test where name=’oldboy’G;​

    18.4 对需要建索引的条件列建立索引

    大表不能高峰值建立索引,300 万记录

    18.5 切割慢查询日志,去重分析后发给大家

    关于 mysql 的配置文件参数设置(my.cnf)

    [mysqld]
    long_query_time = 1
    log-slow-queries = /data/3306/slow.log
    log_queries_not_using_indexs
    关于日志切割脚本
    mv /data/3306/slow.log /opt/$(date +%F)_slow.log
    mysqladmin –uroot –ppcwangjixuan –S /data/3306/mysql.sock flush-logs
  • 相关阅读:
    98.公共汽车
    100.选菜(动态规划)01背包
    102.愤怒的LJF
    96.老鼠的旅行(动态规划)
    95.(01背包)之小吃
    94.Txx考试
    93.数字三角形W(深搜)
    POJ 3352 Road Construction (边双连通分量)
    POJ 3114 Countries in War(强联通分量+Tarjan)
    POJ 3592 Instantaneous Transference(强联通分量 Tarjan)
  • 原文地址:https://www.cnblogs.com/hackerlin/p/12539889.html
Copyright © 2011-2022 走看看