【发布时间】:2013-06-27 22:46:09
【问题描述】:
当--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
【问题讨论】:
-
SET sql_log_bin = 0;查询 SET sql_log_bin = 1; ?
-
也可以做 SET log_queries_not_using_indexes = 0;然后将其设置为 1 而不是您可能需要查找实际的 sql 变量名称,但它类似于上面的内容。
-
你是在问如何让这个查询使用索引?
-
@yak 不,他现在要求停止将其记录为不使用索引的查询。但维护所有其他查询的日志
-
查询高效,无需登录。我们每秒有一个很大的请求,我们浪费了很多时间来记录一个需要 0.000045 秒的查询。
标签: php mysql sql optimization