Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memilih Baris Pertama Setiap Kumpulan dengan Cekap dalam PostgreSQL Menggunakan DISTINCT ON?
Pengenalan: Mendapatkan semula baris atas daripada setiap kumpulan yang ditakrifkan oleh kriteria tertentu ialah operasi pangkalan data biasa. PostgreSQL menyediakan beberapa kaedah, dengan DISTINCT ON
menonjol untuk kecekapan dan kemudahan penggunaannya.
BERBEZA: Teknik Perkasa: DISTINCT ON
dengan elegan mengendalikan pemilihan baris pertama dalam setiap kumpulan, berdasarkan pesanan yang dipilih. Anda menentukan lajur pengumpulan dan tertib untuk menentukan baris "pertama".
Sintaksis dan Penggunaan: Klausa DISTINCT ON
adalah ringkas:
<code class="language-sql">SELECT DISTINCT ON (group_column1, group_column2, ...) column1, column2, ... FROM table_name ORDER BY group_column1, group_column2, ..., ordering_column;</code>
group_column1
, group_column2
, ...: Lajur mentakrifkan kumpulan.column1
, column2
, ...: Lajur untuk diambil semula.ORDER BY
: Menentukan pengisihan dalam setiap kumpulan; baris pertama mengikut susunan ini dipilih.Contoh Ilustrasi: Untuk mendapatkan butiran pembelian terbaharu bagi setiap pelanggan:
<code class="language-sql">SELECT DISTINCT ON (customer_id) customer_id, purchase_date, amount FROM purchases ORDER BY customer_id, purchase_date DESC;</code>
Peningkatan Prestasi: Walaupun DISTINCT ON
secara amnya cekap, pengindeksan boleh meningkatkan prestasi dengan ketara, terutamanya untuk set data yang besar. Indeks yang sesuai ialah:
<code class="language-sql">CREATE INDEX purchases_idx ON purchases (customer_id, purchase_date DESC);</code>
Pertimbangan Penting:
NULL
, gunakan NULLS LAST
atau NULLS FIRST
dalam klausa ORDER BY
untuk hasil yang boleh diramal.DISTINCT ON
, bungkus pertanyaan dalam pernyataan SELECT
lain dengan klausa ORDER BY
yang berasingan.Kesimpulan: DISTINCT ON
menyediakan kaedah yang mantap dan cekap untuk memilih baris pertama daripada setiap kumpulan dalam PostgreSQL. Pengindeksan strategik mengoptimumkan lagi prestasi, menjadikannya alat yang berharga untuk analisis dan pengagregatan data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih Baris Pertama Setiap Kumpulan dengan Cekap dalam PostgreSQL Menggunakan DISTINCT ON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!