如何在--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;
EXPLAIN
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
答案 0 :(得分:1)
我不知道有可能禁用单个查询的记录。 log_queries_not_using_indexes
是全局的,并且即时更改它会阻止任何并发查询的记录(尽管我知道如果查询很快就不太可能这样做。)
由于您确实希望降低此日志记录引起的负载,因此您可能希望使用log_throttle_queries_not_using_indexes
(仅在v5.6.5中添加)或min_examined_row_limit
服务器选项。
后者存在于会话级别。在查询之前,它可能会增加到一个非常大的值,而不会影响并发连接。令人惊讶的是,不需要特殊的特权。