Spec-Zone .ru
спецификации, руководства, описания, API

8.8.5.1. Управление Оценкой Плана Запроса

Задача оптимизатора запросов состоит в том, чтобы найти оптимальный план относительно выполнения SQL-запроса. Поскольку разницей в производительности между "хорошими" и "плохими" планами могут быть порядки величины (то есть, секунды против часов или даже дней), большинство оптимизаторов запросов, включая тот из MySQL, выполняет более или менее исчерпывающий поиск оптимального плана среди всех возможных планов оценки запроса. Для запросов соединения число возможных планов, исследованных оптимизатором MySQL, растет по экспоненте с числом таблиц, на которые ссылаются в запросе. Для небольших чисел таблиц (обычно меньше чем 7 - 10) это не проблема. Однако, когда большие запросы представляются, время, проведенное в оптимизации запросов, может легко стать главным узким местом в производительности сервера.

Более гибкий метод для оптимизации запросов позволяет пользователю управлять, насколько исчерпывающий оптимизатор находится в своем поиске оптимального плана оценки запроса. Общее представление состоит в том, что, чем меньше планов, которые исследуются оптимизатором, тем меньше времени он тратит в компиляции запроса. С другой стороны, потому что оптимизатор пропускает некоторые планы, он может избежать находить оптимальный план.

Поведением оптимизатора относительно числа планов, которые это оценивает, можно управлять, используя две системных переменные: