Spec-Zone.ru › MariaDB

Устранение таблиц в MariaDB

Первым делом оптимизатор MariaDB объединяет определение VIEW в запрос, получив:

select ACRAT_rating
from
  ac_anchor
  left join ac_name on ac_anchor.AC_ID=ac_name.AC_ID
  left join ac_dob on ac_anchor.AC_ID=ac_dob.AC_ID
  left join ac_rating on (ac_anchor.AC_ID=ac_rating.AC_ID and
                          ac_rating.ACRAT_fromdate = 
                            (select max(sub.ACRAT_fromdate)
                             from ac_rating sub where sub.AC_ID = ac_rating.AC_ID))
where
 ACNAM_name='Gary Oldman'

Важно понимать, что полученный запрос содержит бесполезную часть:

  • left join ac_dob on ac_dob.AC_ID=... произведёт ровно одну соответствующую запись:
    • primary key(ac_dob.AC_ID) гарантирует, что для любого значения ac_anchor.AC_ID будет не более одной совпадения,
    • и если соответствия не будет, LEFT JOIN сгенерирует строку с NULL
  • и нам неважно, какая это запись, так как таблица ac_dob не используется больше нигде в запросе.

Это означает, что часть left join ac_dob on ... можно удалить из запроса, и именно это делает модуль Устранения таблиц. Логика обнаружения довольно умная, например, она сможет удалить и часть left join ac_rating on ... вместе с подзапросом (в данном примере она не удалится, потому что ac_rating используется в списке выбора запроса). Модуль Устранения таблиц также может обрабатывать вложенные внешние соединения и внешние соединения нескольких таблиц.

См. также

  • Эта страница основана на следующей записи блога об устранении таблиц: http://s.petrunia.net/blog/?p=58
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки в 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/table-elimination-in-mariadb/

Spec-Zone.ru

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