Spec-Zone.ru › MySQL 5.7

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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/subquery-optimization.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API