Не совсем, разный порядок операций. Там RCE и RFI джойнятся без учета
нуллов. Вот его аналог с LEFT:
SELECT IDS.ID, RCE."RssFeedId"
FROM CONVERT_IDS_TO_ROWS('228,229,1,2,3') IDS
LEFT JOIN (
"RssCacheElements" RCE
JOIN "RssFeedItems" RFI ON RFI."FeedId" = RCE."RssFeedId"
) ON RCE."FeedDefinitionId" = IDS.ID
WHERE RFI."Id" IS NOT NULL
тоже выполняется мгновенно.
Интересно... Спасибо.
У меня ещё вопрос. Ты говорил что No curent record может быть в
запросах, когда процедура зависит от данных таблицы через входные
параметры. А я тут написал такой запрос, где процедуба Б зависит от
процедуры А, а процедура В зависит от А и Б. Внутрях всех процедур грубо
говоря парсится строка. Если щас запрос работает, то означает ли это что
он при любых данных будет работать?
Запрос такой:
SELECT RFI.*
FROM CONVERT_STRING_TO_ROWSET('12,0;12,8;41,0;41,8') DATA
CROSS JOIN GET_STRING_COMPONENT_BY_OFFSET(DATA.ROW, 0) DATA0
CROSS JOIN GET_STRING_COMPONENT_BY_OFFSET(DATA.ROW, DATA0.NEXT_OFFSET) DATA1
JOIN "RssFeedItems" RFI ON RFI."FeedId" = DATA0.Val AND RFI."OwnerId" =
DATA1.Val