Вашата бавна заявка премахва големите jsonb данни за всичките 44255 реда и след това пренася анализираните стойности през сортирането, за да избере първите 20 реда. (Не знам защо прави deTOASTing така нетърпеливо). Така че 44235 JSONB бяха deTOAST просто за да бъдат изхвърлени.
Вашата бърза заявка (вероятно) връща TOAST указатели от хеш съединението, сортира редовете с тези малки указатели и след това премахва TOAST само 20-те оцелели. В случая с EXPLAIN ANALYZE, той дори не деТОАСТИРА оцелелите, а просто изхвърля указателите.
Това е „защо“, що се отнася до това какво да направите по въпроса, ако наистина не можете да промените никоя от заявката под най-горната част, съмнявам се, че можете да направите нещо по въпроса от страната на сървъра.
Ако можете да промените по-съществено заявката, можете да подобрите времето за изпълнение с CTE. Накарайте CTE да избере целия jsonb и след това избирането на CTE извлича стойността от него.
WITH T as (select cfiles.property_values as "1907", <rest of query>)
SELECT "1907"->>'name1', "1907"->>'name2', <rest of select list> from T;