2

如何避免在--log-queries-not-using-indexes打开时记录此查询?

查询来源

EXPLAIN SELECT  id,autor,description
FROM    (
        SELECT  @cnt := COUNT(*) + 1,
                @lim := 3
        FROM    testimonale
        ) vars
STRAIGHT_JOIN
        (
        SELECT  r.*,
                @lim := @lim - 1
        FROM    testimonale r
        WHERE   (@cnt := @cnt - 1)
                AND RAND() < @lim / @cnt

        ) i;

解释

id  select_type  table       type    possible_keys  key  key_len  ref  rows  Extra                         
1   PRIMARY      <derived2>  system                                    1                                   
1   PRIMARY      <derived3>  ALL                                       3                                   
3   DERIVED      r           ALL                                       8     Using where                   
2   DERIVED                                                                  Select tables optimized away  
4

1 回答 1

1

我不知道有任何可能禁用单个查询的记录。log_queries_not_using_indexes是全局的,即时更改它会阻止记录任何并发查询(尽管我知道如果查询那么快,这不太可能)。

由于您实际上想要降低此日志记录引起的负载,因此您可能想要使用log_throttle_queries_not_using_indexes(仅在 v5.6.5 中添加)或min_examined_row_limit服务器选项。

后者存在于会话级别。它可以在查询之前增加到一个大得离谱的值,而对并发连接没有影响。令人惊讶的是,不需要特殊特权。

于 2013-06-27T14:26:17.400 回答