1=1
...
WHERE 1=1
А в мануле по MySQL-экзамену, который я сейчас читаю, чаще всего пишут так
...
WHERE 1
Помня о том, что MySQL умеет преобразовывать типы данных как ему надо, я подумал, что эти выражения не совсем эквивалентны, что может сказаться даже на скорости их выполнения.
Тогда я пустил отдельно два этих запроса:
SELECT BENCHMARK(1000000000, 1)
SELECT BENCHMARK(1000000000, 1=1)
Первый отработал за 19.19 сек, второй - 56.90
Потом я пошёл дальше и написал хранимку:
CREATE FUNCTION query_table(s INT) RETURNS INT
BEGIN
SELECT COUNT(*) INTO s FROM `translit2` WHERE 1;
RETURN s;
END
Эта функция отработала за 17 секунд (кол-во тестов пришлось уменьшить, чтобы не тормозило. Кстати, хорошая кликуха - Тормозило)
SELECT BENCHMARK(1000000, query_table(1) )
После внесения в код функции 1=1, она стала отрабатывать миллион пусков бенчмарком за 20 секунд.
Вот такие приколы. Ах, сколько ещё оптимизировать можно!
0 комментов:
Отправить комментарий