Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memilih Baris Pertama Setiap Kumpulan dengan Cekap dalam PostgreSQL Menggunakan DISTINCT ON?

Bagaimanakah Saya Boleh Memilih Baris Pertama Setiap Kumpulan dengan Cekap dalam PostgreSQL Menggunakan DISTINCT ON?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-25 20:27:12683semak imbas

How Can I Efficiently Select the First Row of Each Group in PostgreSQL Using DISTINCT ON?

Memilih Baris Pertama setiap Kumpulan dengan Cekap dalam PostgreSQL

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:

  • Kendalikan NULL: Jika lajur pengumpulan mungkin mengandungi nilai NULL, gunakan NULLS LAST atau NULLS FIRST dalam klausa ORDER BY untuk hasil yang boleh diramal.
  • Keputusan Menyusun Semula: Jika susunan output yang diingini berbeza daripada pesanan 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn