PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cải thiện hiệu suất của các truy vấn Postgres jsonb kết hợp với các truy vấn quan hệ

Truy vấn chậm của bạn đang deTOASTing dữ liệu jsonb lớn cho tất cả 44255 hàng, sau đó mang các giá trị được phân tích cú pháp thông qua sắp xếp để chọn ra 20 hàng hàng đầu. (Tôi không biết tại sao nó lại deTOASTing háo hức như vậy). Vì vậy, 44235 JSONB đã bị deTOASTed chỉ để vứt bỏ.

Truy vấn nhanh của bạn (có lẽ là) trả về con trỏ TOAST từ phép tham gia băm, sắp xếp các hàng với các con trỏ nhỏ đó và sau đó loại bỏTOAST chỉ 20 con sống sót. Trong trường hợp GIẢI THÍCH PHÂN TÍCH, nó thậm chí không loại bỏ những người sống sót, nó chỉ ném các con trỏ đi.

Đó là "lý do tại sao", về việc phải làm gì với nó, nếu bạn thực sự không thể thay đổi bất kỳ truy vấn nào bên dưới phần trên cùng, tôi nghi ngờ rằng bạn có thể làm bất cứ điều gì về nó ở phía máy chủ.

Nếu bạn có thể sửa đổi truy vấn về cơ bản hơn, thì bạn có thể cải thiện thời gian chạy với CTE. Yêu cầu CTE chọn toàn bộ jsonb, sau đó chọn trên CTE lấy giá trị ra khỏi nó.

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. Không thể xuất bảng AWS RDS Postgres sang CSV trong S3 bằng cách sử dụng hàm aws_s3.query_export_to_s3

  2. Rails 3, will_paginate, ngẫu nhiên, các bản ghi lặp lại, Postgres, setseed thất bại

  3. vấn đề với mã hóa khi nhập json vào Postgres

  4. Nâng cấp dựa trên trình kích hoạt tùy chỉnh cho PostgreSQL

  5. pgFincore 1.2, một phần mở rộng PostgreSQL