"sasha" <[EMAIL PROTECTED]> wrote:

При этом записей с RCE."FeedDefinitionId" = 280 не существует

Существует, с RssFeedId = NULL. Она просто в результат не попадает.

Теперь я раскоментирую --  OR RCE."FeedDefinitionId" = 280.

Упрощаем тест:

select count(*)
from "RssFeedItems"
where "FeedId" = 49
union all
select count(*)
from "RssFeedItems"
where "FeedId" = null

Но при этом из таблицы RssFeedItems получаю 57767 индексированных чтений !!!!

Естественно, т.к. в ней именно столько нуллов.

CREATE INDEX "RssFeedItems_IDX3" ON "RssFeedItems" ("FeedId");

А вот тут срабатывает новая оптимизация в FB2 - нулловые ключи индекса пропускаются при сканировании на равенство. На предыдущий запрос это не действует, т.к. там композитный индекс, только один из сегментов которого нулловый. Теоретически, это тоже можно попытаться оптимизировать, но не в 2.0.

В общем, все работает как задумано.


--
Дмитрий Еманов


Ответить