8.2.2 Оптимизация подзапросов, производных таблиц и ссылок на представления
- 8.2.2.1 Оптимизация подзапросов, производных таблиц и ссылок на представления с преобразованиями полусоединения
- 8.2.2.2 Оптимизация подзапросов с материализацией
- 8.2.2.3 Оптимизация подзапросов с помощью стратегии EXISTS
- 8.2.2.4 Оптимизация производных таблиц и ссылок на представления с помощью слияния или материализации
Оптимизатор запросов MySQL использует различные стратегии для оценки подзапросов:
-
Для подзапросов
IN(или=ANY) оптимизатор может использовать следующие варианты:Полусоединение
Материализация
EXISTSстратегия
-
Для подзапросов
NOT IN(или<>ALL) оптимизатор может использовать следующие варианты:Материализация
EXISTSстратегия
Для производных таблиц оптимизатор может использовать следующие варианты (которые также применимы к ссылкам на представления):
Объединение производной таблицы в блок внешнего запроса
Материализация производной таблицы во временную внутреннюю таблицу
Следующее обсуждение содержит дополнительную информацию о перечисленных выше стратегиях оптимизации.
Ограничение для операторов UPDATE и DELETE, использующих подзапрос для изменения одной таблицы, заключается в том, что оптимизатор не использует оптимизации подзапросов с помощью полусоединения или материализации. В качестве обходного решения попробуйте переписать их как операторы UPDATE и DELETE для нескольких таблиц, которые используют соединение вместо подзапроса.
© 2025 Oracle
Licensed under the GPLv2 License.