Не совсем, разный порядок операций. Там 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

Ответить