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

SELECT DISTINCT lebih lambat dari yang diharapkan di meja saya di PostgreSQL

Meskipun belum ada pemindaian lompatan indeks di Postgres, tiru itu:

WITH RECURSIVE cte AS (
   (   -- parentheses required
   SELECT product_id
   FROM   tickers
   ORDER  BY 1
   LIMIT  1
   )
   UNION ALL
   SELECT l.*
   FROM   cte c
   CROSS  JOIN LATERAL (
      SELECT product_id
      FROM   tickers t
      WHERE  t.product_id > c.product_id  -- lateral reference
      ORDER  BY 1
      LIMIT  1
      ) l
   )
TABLE  cte;

Dengan indeks di (product_id) dan hanya 40 ID produk unik dalam tabel ini harus Cepat . Dengan modal F .
Indeks PK di (product_id, trade_id) bagus juga!

Dengan hanya sedikit baris per product_id (kebalikan dari distribusi data Anda), DISTINCT / DISTINCT ON akan secepat atau lebih cepat.

Pekerjaan untuk menerapkan pemindaian lewati indeks sedang berlangsung.
Lihat:

  • Pilih baris pertama di setiap grup GROUP BY?
  • Optimalkan kueri GROUP BY untuk mengambil baris terbaru per pengguna
  • Apakah indeks komposit juga bagus untuk kueri di bidang pertama?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. VACUUM PostgreSQL dan ANALISIS Tips Praktik Terbaik

  2. Upser dengan transaksi

  3. Fitur Tersembunyi PostgreSQL

  4. mengapa PG::UniqueViolation:ERROR:nilai kunci duplikat melanggar batasan unik?

  5. Bagaimana cara membuat cadangan satu tabel dalam database postgres?