5.2.5 Как MySQL оптимизирует DISTINCT
DISTINCT
преобразовывается к GROUP BY
для всех столбцов, для DISTINCT
в
сочетании с ORDER BY
, помимо этого, во многих случаях также требуется
временная таблица.
Если LIMIT #
указывается совместно с DISTINCT
, MySQL остановится, как
только найдет # уникальных строк.
Если не все столбцы и не во всех таблицах используются, MySQL прекратит
сканирование неиспользуемых таблиц, как только найдет первое совпадение.
SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
В случае, если, предположим, таблица t1
используется перед t2
(это
проверяется при помощи EXPLAIN
), MySQL прекратит чтение в t2
(для каждой
отдельной строки из t1
), после того как найдет первую строку в t2
.