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

Postgres:Mengapa kinerjanya sangat buruk pada subpilihan dengan Offset/Batas

Saya pikir gabungan yang dinyatakan dalam klausa SELECT sedang dieksekusi bahkan untuk 100000 baris yang tidak Anda sertakan dalam kumpulan data akhir.

Bagaimana dengan ini:

SELECT s2.user_id,
(SELECT address_id FROM address a WHERE a.user_id = s2.user_id ORDER BY address_id OFFSET 0 LIMIT 1) AS a_id
FROM (select *
      from   subscribers s
      ORDER BY s.user_id
      OFFSET 100000 LIMIT 200) s2

Jika gagal, coba ekspresi tabel umum:

With s2 as (
  select *
  from   subscribers s
  ORDER BY s.user_id
  OFFSET 100000 LIMIT 200)
SELECT s2.user_id,
(SELECT address_id FROM address a WHERE a.user_id = s2.user_id ORDER BY address_id OFFSET 0 LIMIT 1) AS a_id
FROM s2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mencocokkan satu hari penuh dengan bidang datetime?

  2. PostgreSQL INSERT FROM SELECT dengan kolom tambahan

  3. Bagaimana pg_typeof() Bekerja di PostgreSQL

  4. Bagaimana saya bisa menetapkan batas ukuran untuk tipe data int di PostgreSQL 9.5

  5. Apakah mungkin untuk mendapatkan riwayat kueri yang dibuat di postgres