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?