Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan DISTINCT PostgreSQL SELECT Saya dengan Kunci Utama Komposit Sangat Lambat?
PostgreSQL SELECT DISTINCT
Isu Prestasi dengan Kekunci Komposit
Menggunakan SELECT DISTINCT
pada jadual PostgreSQL dengan kunci utama komposit (cth., (product_id, trade_id)
) boleh menjadi sangat perlahan. Perancang pertanyaan selalunya memilih imbasan berurutan dan bukannya menggunakan indeks dengan cekap.
Kenapa Lambat?
Penyelesaian: Mensimulasikan Imbasan Langkau Indeks dengan CTE
Walaupun imbasan langkau indeks sebenar tidak tersedia, kami boleh meniru gelagatnya dengan berkesan menggunakan Ungkapan Jadual Biasa (CTE) rekursif:
<code class="language-sql">WITH RECURSIVE cte AS ( ( -- parentheses are crucial 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 ORDER BY 1 LIMIT 1 ) l ) SELECT * FROM cte;</code>
CTE ini berulang melalui nilai product_id
unik dalam tertib diisih, memanfaatkan indeks pada (product_id)
untuk kecekapan.
Kelebihan Pendekatan ini
(product_id, trade_id)
dan indeks pada (product_id)
dengan berkesan.Atas ialah kandungan terperinci Mengapa Pertanyaan DISTINCT PostgreSQL SELECT Saya dengan Kunci Utama Komposit Sangat Lambat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!