7.4 Планировщик визуального объяснения
Функция визуального объяснения генерирует и отображает визуальное представление оператора MySQL, используя расширенную информацию, доступную в расширенном формате JSON. MySQL Workbench предоставляет все форматы EXPLAIN для выполненных запросов, включая исходный расширенный JSON, традиционный формат и визуальный план запроса.
Использование визуального объяснения
Чтобы просмотреть визуальный план выполнения запроса, выполните запрос из редактора SQL, а затем выберите План выполнения во вкладке результатов запроса. План выполнения по умолчанию устанавливается на Visual Explain, но также включает представление Tabular Explain, аналогичное тому, что вы видите при выполнении в MySQL-клиенте. Сведения о том, как MySQL выполняет операторы, см. в .
Конвенции визуального объяснения
Порядок выполнения в диаграмме визуального объяснения — снизу вверх и слева направо. Приведенные ниже примеры диаграмм предоставляют обзор графических, текстовых и информационных конвенций, используемых для представления аспектов планов визуального объяснения. Для получения подробной информации см.:
На первой фигуре визуальная диаграмма объяснения показывает визуальное представление следующего запроса.
SELECT CONCAT(customer.last_name, ', ', customer.first_name)
AS customer, address.phone, film.title FROM rental
INNER JOIN customer ON rental.customer_id = customer.customer_id
INNER JOIN address ON customer.address_id = address.address_id
INNER JOIN inventory ON rental.inventory_id = inventory.inventory_id
INNER JOIN film ON inventory.film_id = film.film_id
WHERE rental.return_date IS NULL
AND rental_date + INTERVAL film.rental_duration DAY < CURRENT_DATE()
LIMIT 5;
Рисунок 7.7 Пример визуального объяснения
Следующая визуальная диаграмма объяснения показывает визуальное представление запроса, содержащего соединение с хешированием. До MySQL Workbench 8.0.22 соединение с хешированием представлялось block nested
loop ромбом для запросов, выполняемых MySQL 8.0.19 (или более ранними версиями).
SELECT first_name, last_name
FROM actor
FULL JOIN film_actor
WHERE '' = film_actor.actor_id;
Рисунок 7.8 Пример визуального объяснения с соединением с хешированием
Графические конвенции
Стандартные прямоугольники: таблицы
Округлённые прямоугольники: операции, такие как GROUP и SORT
Прямоугольники с рамкой: подзапросы
Ромбы: соединения
Текстовые и информационные конвенции
Стандартный текст под прямоугольниками: имя таблицы (или псевдонима)
Жирный текст под прямоугольниками: ключ/индекс, который использовался
Число в правом верхнем углу прямоугольника: количество строк, используемых из таблицы после фильтрации
Число в левом верхнем углу прямоугольника: относительная стоимость доступа к этой таблице (требуется MySQL 5.7 или выше)
Число справа от ромбов (вложенных циклов или соединения с хешированием): количество строк, полученных в результате JOIN
Число над ромбами: относительная стоимость JOIN (требуется MySQL 5.7 или выше)
В следующей таблице показаны связанные цвета и описания, используемые в диаграмме визуального объяснения. Более подробную информацию об оценках стоимости см. в .
Таблица 7.1 Информация о диаграмме визуального объяснения
| Имя системы | Цвет | Текст на визуальной диаграмме | Информация, связанная с всплывающей подсказкой |
|---|---|---|---|
| SYSTEM | Синий | Одна строка: системная константа | Очень низкая стоимость |
| CONST | Синий | Одна строка: константа | Очень низкая стоимость |
| EQ_REF | Зелёный | Поиск по уникальному ключу | Низкая стоимость — оптимизатор смог найти индекс, который может использоваться для извлечения необходимых записей. Быстродействие высокое, так как поиск по индексу напрямую ведёт к странице со всеми данными строки |
| REF | Зелёный | Поиск по неуникальному ключу | Низко-средняя — низкая, если количество совпадающих строк мало; выше, по мере увеличения количества строк |
| FULLTEXT | Жёлтый | Поиск по полнотекстовому индексу | Специализированный поиск FULLTEXT. Низкая — для этого специализированного требования поиска |
| REF_OR_NULL | Зелёный | Поиск по ключу + извлечение значений NULL | Низко-средняя — если количество совпадающих строк мало; выше, по мере увеличения количества строк |
| INDEX_MERGE | Зелёный | Объединение индексов | Средняя — поиск лучшего выбора индекса в запросе для повышения производительности |
| UNIQUE_SUBQUERY | Оранжевый | Поиск по уникальному ключу в таблице подзапроса | Низкая — используется для эффективной обработки подзапросов |
| INDEX_SUBQUERY | Оранжевый | Поиск по неуникальному ключу в таблице подзапроса | Низкая — используется для эффективной обработки подзапросов |
| RANGE | Оранжевый | Диапазонное сканирование индекса | Средняя — частичное сканирование индекса |
| INDEX | Красный | Полное сканирование индекса | Высокая — особенно для больших индексов |
| ALL | Красный | Полное сканирование таблицы | Очень высокая — очень дорогостоящее для больших таблиц, но оказывает меньшее влияние на небольшие. Для таблицы не были найдены используемые индексы, что заставляет оптимизатор искать каждую строку. Это также может означать, что диапазон поиска настолько широк, что индекс был бы бесполезен. |
| UNKNOWN | Чёрный | неизвестно | Примечание: Это значение по умолчанию, если соответствие определить нельзя |
© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/workbench-en/wb-performance-explain.html