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
Lepaskan: 2025-01-25 20:27:12
asal
715 orang telah melayarinya

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:

SELECT DISTINCT ON (group_column1, group_column2, ...)
       column1, column2, ...
FROM table_name
ORDER BY group_column1, group_column2, ..., ordering_column;
Salin selepas log masuk
  • 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:

SELECT DISTINCT ON (customer_id)
       customer_id, purchase_date, amount
FROM   purchases
ORDER  BY customer_id, purchase_date DESC;
Salin selepas log masuk

Peningkatan Prestasi: Walaupun DISTINCT ON secara amnya cekap, pengindeksan boleh meningkatkan prestasi dengan ketara, terutamanya untuk set data yang besar. Indeks yang sesuai ialah:

CREATE INDEX purchases_idx ON purchases (customer_id, purchase_date DESC);
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan