SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Изменения оптимизатора?
Изменения оптимизатора? [сообщение #140] Tue, 05 July 2022 19:55 Переход к предыдущему сообщению
optimiz94 в настоящее время не в онлайне  optimiz94
Сообщений: 15
Зарегистрирован: July 2022
Junior Member
Есть такой запрос:

select m.Id
from Items_Main m
left join Items_Ext e on e.Id=m.Id
where m.f0=?p0
and e.f1=?p1
and e.f2=?p2
and e.f3=?p3
and e.f4=?p4
На все поля, перечисленные в where, есть индексы (точнее, foreign keys, а индексы уже следствие).

Раньше FB использовал индекс по m.f0, и не мог использовать индексы по таблице e, потому что она была в left join. Теперь может, и это ломает планы. По полям f0 и f1 хорошая селективность, но оптимизатор использует не просто индекс по f1, а пересечение индексов по f1 и f2. Пересечение индексов наверное хорошая вешь для аналитических запросов, но для быстрых OLTP это просто беда, нужно всегда следить, чтобы такого не случилось.
В моём случае нужно переписать запрос как
where m.f0=?p0 and e.f1=?p1 and e.f2+0=?p2 and e.f3+0=?p3 and e.f4+0=?p4
Я думал, что это хорошая идея делать left join, чтобы исключить использование индексов (этот же трюк и в SQL Server работает). Теперь придётся видимо так делать:
left join Items_Ext e on e.Id=m.Id+0
Изменение произошло где-то между WI-V3.0.8.33392 и WI-V3.0.8.33540.
Это значит, при переезде с FB3 на FB4 может много чего полететь.
 
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: Проблемное арифметическое выражение
Следующая тема: Нужна помощь с проектированием базы
Переход к форуму:
  


Текущее время: Sat Apr 20 09:37:58 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00779 секунд