PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Poprawa wydajności zapytań jsonb Postgres w połączeniu z zapytaniami relacyjnymi

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skonfigurować psycopg2 z bazą danych PostgreSQL Google App Engine

  2. Pobieranie nieobsługiwanej wersji [archiver] (1.13) w nagłówku pliku podczas uruchamiania pg_restore

  3. Zapytanie SQL do wyszukiwania według dnia / miesiąca / roku / dnia i miesiąca / dnia i roku itp

  4. postgresql generuje sekwencję bez przerw

  5. isnumeric() z PostgreSQL