xxggmmxx 发表于 2018-10-20 12:58:05

如何在MySQL中筛选全表扫描的SQL查询

  专题描述
  提问如何在MySQL中筛选出全表扫描的SQL语句,而非通过explain命令一条条SQL语句进行查看。
  解决方案
  1、设置long_query_time时间足够大,尽量让非全表扫描且执行时间长的SQL语句不记录到慢查询日志(slow log)中;
  设置log_queries_not_using_indexes=on;
  至此全表扫描的SQL语句被记录到slow log中,值得注意的是,执行时间超过long_query_time的SQL语句也将记录到slow log中,无论该SQL语句是否使用索引。
  2、使用Percona Toolkit的pt-query-digest工具。
  知识点
  1、long_query_time参数含义:
  设置记录到slow log中的SQL语句执行时间的最小值,即执行时间超过该值的SQL语句被记录到slow log中;前提为slow log为开启状态,否则该参数失效。
  2、log_queries_not_using_indexes参数含义:
  将没有使用索引的SQL语句记录到slow log中;前提为slow log为打开

页: [1]
查看完整版本: 如何在MySQL中筛选全表扫描的SQL查询