如何在没有索引的情况下记录MySQL查询?

8

我发现有一个不错的选项可以启用慢查询日志和没有索引的查询:

  SET GLOBAL log_queries_not_using_indexes=1;
  SET GLOBAL log_slow_queries=1;

好的,好的,但看起来它们都写入了我在my.cnf配置文件中指定的同一日志文件:

  [mysqld]
  long_query_time         = 1
  log-slow-queries        = /var/log/mysql/mysql-slow.log

我使用mysqldumpslow来查看最慢的查询,但是我需要怎么做才能单独查看没有索引的查询呢?


我认为你需要一步一步地完成它。 - Kevin Burton
顺便提一下,可以查看mysqlsla作为日志分析器:http://hackmysql.com/mysqlsla - Dor
1个回答

10
你做不到。日志文件是一个文本文件,你无法从中推断出查询在执行时是否使用了索引。 另外,选项 log-queries-not-using-indexes 并不一定记录没有使用索引的查询,请参见这里

如果您正在启用慢查询日志并使用此选项,则将记录预计检索所有行的查询。请参见第5.2.5节“慢查询日志”。这个选项并不意味着没有使用索引。例如,一个使用全索引扫描的查询使用了一个索引但会被记录,因为索引不会限制行数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接