Карта оптимизаций подзапросов
Ниже приведена карта, отображающая все типы подзапросов, разрешённые в языке SQL, и стратегии оптимизатора, доступные для их обработки.
- Незакрашенные области представляют различные типы подзапросов, например:
- Подзапросы, имеющие форму
x IN (SELECT ...) - Подзапросы, находящиеся в
FROM-оператор - .. и так далее
- Подзапросы, имеющие форму
- Размер каждой незакрашенной области примерно соответствует важности (т.е. частоте использования) этого типа подзапроса. Например,
x IN (SELECT ...)запросы являются наиболее важными, аEXISTS (SELECT ...)— относительно неважными. - Закрашенные области представляют оптимизации/стратегии выполнения, применяемые для обработки различных типов подзапросов.
- Цвет оптимизации указывает, в какой версии MySQL/MariaDB она была доступна (см. легенду ниже).
Некоторые вещи не отображены на карте:
- MariaDB не оценивает дорогостоящие подзапросы при оптимизации (это означает, что EXPLAIN всегда быстрый). MySQL 5.6 добился прогресса в этом отношении, но его оптимизатор по-прежнему будет оценивать определенные типы подзапросов (например, подзапросы скалярного контекста, используемые в предикатах диапазона).
Ссылки на страницы об отдельных оптимизациях:
- Оптимизации, не связанные с полусоединениями Материализация (включая учитывающие NULL и частичное соответствие)
- Оптимизации таблиц с производными
См. также
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не предварительно проверяется MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают точку зрения MariaDB или любой другой стороны.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/subquery-optimizations-map/