Spec-Zone.ru › MariaDB

Улучшения в оптимизации ORDER BY

MariaDB, начиная с 10.1

MariaDB 10.1 включает несколько улучшений оптимизатора ORDER BY.

Исправления были внесены в ответ на жалобы пользователей MariaDB, поэтому они решают реальные проблемы оптимизации. Исправления немного сложно описать (так как оптимизатор ORDER BY сложный), но вот краткое описание:

Оптимизатор ORDER BY в MariaDB 10.1:

  • Не делает глупых выборов, когда присутствуют несколько многокомпонентных ключей и потенциальные диапазонные доступа (MDEV-6402).
    • Это также исправляет ошибку MySQL Bug#12113.
  • Всегда использует «диапазон» и (не полный «сканирование индекса»), когда переключается на индекс для удовлетворения ORDER BY … LIMIT (MDEV-6657).
  • Пытается быть умным и использовать оценки стоимости/количества записей из других частей оптимизатора (MDEV-6384, MDEV-465).
    • Это изменение также исправляет ошибку MySQL Bug#36817.
  • Полностью использует функцию Расширенных ключей InnoDB при проверке, можно ли пропустить filesort() (MDEV-6796).

Дополнительные оптимизации

Начиная с MariaDB 10.1.15

  • Оптимизатор ORDER BY учитывает множественные равенства (MDEV-8989). Эта оптимизация по умолчанию не включена в MariaDB 10.1. Вам необходимо явно включить ее, установив системную переменную optimizer_switch следующим образом:
optimizer_switch='orderby_uses_equalities=on'

Включение переключателя считается безопасным. По умолчанию он выключен в MariaDB 10.1, чтобы избежать изменения планов запросов в стабильной версии выпуска. По умолчанию он включен в MariaDB 10.2

Сравнение с MySQL 5.7

В журнале изменений MySQL 5.7 можно найти этот фрагмент:

Включение переключения индекса на основе стоимости из-за небольшой границы (WL#6986) : Мы приняли решение в make_join_select() о том, следует ли переключаться на новый индекс для поддержки «ORDER BY ... LIMIT N» на основе стоимости. Эта работа исправляет ошибку Bug#73837.

MariaDB не использует исправление Oracle (мы считаем, что make_join_select не является правильным местом для оптимизации ORDER BY), но эффект тот же: этот случай покрывается оптимизатором MariaDB 10.1.

См. также

  • Статья блога MariaDB 10.1: Улучшенная оптимизация запросов для ORDER BY … LIMIT
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно 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/improvements-to-order-by/

Spec-Zone.ru

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