Все привет. Не пойму почему запрос попадает в query log.
Запрос:
SELECT last_g FROM flag WHERE CURRENT_TIMESTAMP >= DATE_ADD(last_g, INTERVAL 1990 MINUTE);
Таблица flag:
CREATE TABLE flag(
f_last_game TINYINT(4) NOT NULL DEFAULT 0,
last_g DATETIME DEFAULT '0000-00-00 00:00:00',
timeout_r SMALLINT(6) DEFAULT 5,
PRIMARY KEY (f_last_game),
UNIQUE INDEX UK_flag (last_g, timeout_r, f_last_game),
UNIQUE INDEX UK_flag_last_g (last_g),
UNIQUE INDEX UK_flag_timeout_r (timeout_r)
)
ENGINE = INNODB
AVG_ROW_LENGTH = 16384
CHARACTER SET latin1
COLLATE latin1_swedish_ci;
Попадает туда из-за отсутсвия индекса, потому что начал туда попадать после включения log-queries-not-using-indexes.
И еще: MySQL. В таблице одна запись.
Здравствуйте, Аноним, Вы писали:
> Все привет. Не пойму почему запрос попадает в query log.
> SELECT last_g FROM flag WHERE CURRENT_TIMESTAMP >= ;
> Попадает туда из-за отсутсвия индекса, потому что начал туда попадать после включения log-queries-not-using-indexes.
DATE_ADD(last_g, INTERVAL 1990 MINUTE)
Вычисляется для каждой строки, по этому индекс не используется.
Здравствуйте, <Аноним>, Вы писали:
А>А что можно сделать, что бы он не попадал в query log?
SELECT last_g FROM flag WHERE DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1990 MINUTE) >= last_g;
СУВ,
Aikin
Здравствуйте, Аноним, Вы писали:
> А что можно сделать, что бы он не попадал в query log?
Он попадает туда, потому что не использует индексы. Если нужно, чтобы туда запросы не попадали, то нужно отключить логгирование запросов, которые не используют индексы или переписать запрос таким образом, чтобы он их использовал (убрать функцию из запроса).