PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Meningkatkan kinerja kueri jsonb Postgres yang dikombinasikan dengan kueri relasional

Kueri lambat Anda menghapus data jsonb besar untuk semua 44255 baris, dan kemudian membawa nilai yang diuraikan melalui pengurutan untuk memilih 20 baris teratas. (Saya tidak tahu mengapa ia melakukan deTOASTing dengan penuh semangat seperti itu). Jadi 44235 JSONB dideTOAST hanya untuk dibuang.

Permintaan cepat Anda (mungkin) mengembalikan pointer TOAST dari hash join, mengurutkan baris dengan pointer kecil itu, dan kemudian hanya menghapus 20 yang selamat. Dalam kasus EXPLAIN ANALYZE, itu bahkan tidak menghilangkan korban yang selamat, itu hanya membuang petunjuk.

Itulah "mengapa", tentang apa yang harus dilakukan, jika Anda benar-benar tidak dapat mengubah kueri apa pun di bawah bagian paling atas, saya ragu ada yang dapat Anda lakukan tentang itu di sisi server.

Jika Anda dapat mengubah kueri secara lebih substansial, Anda dapat meningkatkan waktu proses dengan CTE. Minta CTE memilih seluruh jsonb, lalu pilih pada CTE untuk mengeluarkan nilainya.

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. Praktik Terbaik Pencatatan Audit PostgreSQL

  2. Apa itu LEFT JOIN di PostgreSQL

  3. melewati parameter Tanggal untuk membuat kueri rentang tanggal

  4. Di Postgresql, paksa unik pada kombinasi dua kolom

  5. Sisipan massal SQLAlchemy Core lambat