Spec-Zone.ru › MariaDB

Подсказки оптимизатора

Подсказки оптимизатора

В SELECT есть некоторые параметры, влияющие на план выполнения. Они известны как подсказки оптимизатора.

HIGH PRIORITY

HIGH_PRIORITY присваивает запросу более высокий приоритет. Если таблица заблокирована, запросы с высоким приоритетом SELECT будут выполнены как только блокировка будет снята, даже если другие запросы находятся в очереди. HIGH_PRIORITY применяется только если система хранения данных поддерживает только блокировку на уровне таблицы (MyISAM, MEMORY, MERGE). Подробности см. в разделе HIGH_PRIORITY и LOW_PRIORITY.

SQL_CACHE / SQL_NO_CACHE

Если системная переменная query_cache_type установлена в значение 2 или DEMAND, а текущий запрос может быть кэширован, SQL_CACHE заставляет запрос кэшироваться, а SQL_NO_CACHE — не кэшироваться. Для UNION следует указать SQL_CACHE или SQL_NO_CACHE для первого запроса. Подробнее см. также раздел Кэш запросов и список типов запросов, которые не могут быть кэшированы.

SQL_BUFFER_RESULT

SQL_BUFFER_RESULT заставляет оптимизатор использовать временную таблицу для обработки результата. Это полезно, чтобы как можно скорее освободить блокировки.

SQL_SMALL_RESULT / SQL_BIG_RESULT

SQL_SMALL_RESULT и SQL_BIG_RESULT сообщают оптимизатору, является ли результат очень большим. Обычно операции GROUP BY и DISTINCT выполняются с использованием временной таблицы. Только если результат очень большой, использование временной таблицы неудобно. Оптимизатор автоматически определяет, слишком ли большой результат, но вы можете принудительно заставить оптимизатор использовать временную таблицу с SQL_SMALL_RESULT, или избежать использования временной таблицы с помощью SQL_BIG_RESULT.

STRAIGHT_JOIN

STRAIGHT_JOIN применяется к запросам JOIN и сообщает оптимизатору, что таблицы должны считываться в порядке их появления в SELECT. Для const и system таблиц этот параметр иногда игнорируется.

SQL_CALC_FOUND_ROWS

SQL_CALC_FOUND_ROWS применяется только при использовании LIMIT условия. Если этот параметр используется, MariaDB посчитает количество строк, которые соответствовали бы запросу без LIMIT условия. Это число можно получить в следующем запросе, используя FOUND_ROWS().

USE/FORCE/IGNORE INDEX

USE INDEX, FORCE INDEX и IGNORE INDEX ограничивают планирование запроса определенным индексом.

Дополнительную информацию о некоторых из этих параметров см. в разделе Принудительное задание планов запросов.

Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно 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/optimizer-hints/

Spec-Zone.ru

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