Twoje wolne zapytanie deTOAST usuwa duże dane jsonb dla wszystkich 44255 wierszy, a następnie przenosi przeanalizowane wartości przez sortowanie, aby wybrać 20 górnych wierszy. (Nie wiem, dlaczego tak chętnie się deTOAST). Tak więc 44235 JSONB zostało zdeTOSOWANE tylko po to, by je wyrzucić.
Twoje szybkie zapytanie (prawdopodobnie) zwraca wskaźniki TOAST z połączenia mieszającego, sortuje wiersze tymi małymi wskaźnikami, a następnie deTOAST tylko 20 ocalałych. W przypadku WYJAŚNIJ ANALIZĘ, nie usuwa nawet TOAST ocalałych, po prostu odrzuca wskazówki.
Oto "dlaczego", jeśli chodzi o to, co z tym zrobić, jeśli naprawdę nie możesz zmienić żadnego z zapytań poniżej górnej części, wątpię, czy można coś z tym zrobić po stronie serwera.
Jeśli możesz bardziej znacząco zmodyfikować zapytanie, możesz poprawić czas wykonywania za pomocą CTE. Niech CTE wybierze cały jsonb, a następnie wybierz na CTE wyciągnie z niego wartość.
WITH T as (select cfiles.property_values as "1907", <rest of query>)
SELECT "1907"->>'name1', "1907"->>'name2', <rest of select list> from T;