![]()  | 
		
Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1

Я тут решил проверить, одинаково ли быстро выполняются запросы вида
Неактивен

Очень даже влияют (см. EXPLAIN для обоих запросов). Во втором случае имеет место подзапрос. То есть выполняется запрос в скобках, а затем внешний запрос. Оптимизация подзапросов в настоящее время, в основном, не реализовано, то есть оптимизатор не понимает, что запрос на самом деле один.
Неактивен

Ну, например, я получил замедление для случая, когда никакие индексы не используются. Т.е. поздапрос оптимизировать, в общем, не нужно.
Или имеется в виду, что запрос надо фактически выполнить два раза? (тогда непонятно, почему замедление на 15%, а не на 100%)
Неактивен

Подзапрос выполняется и его результат помещается во временную таблицу. Внешний запрос обращается к данной временной таблице (это быстрее, чем к таблице на диске).
Неактивен

А я тестировал для MEMORY-таблиц ![]()
Может быть, он там как-то уже более разобран..
Неактивен

Это может быть не буквально временная таблица, а внутреннее представление данных (хранится может как в памяти, так и на диске, в зависимости от объема - EXPLAIN об этом не говорит). Кстати, для больших таблиц, EXPLAIN выполняется долго - это еще одна недооптимизация.
Неактивен

Я так понимаю, что EXPLAIN выполняется также, как и запрос, просто данные не пересылаются.. (это предположение такое)
Неактивен

LazY написал:
Я так понимаю, что EXPLAIN выполняется также, как и запрос, просто данные не пересылаются.. (это предположение такое)
Обычно EXPLAIN не выполняет запрос, но видимо он выполняет все подзапросы.
Неактивен
Страниц: 1