Rumah >pangkalan data >tutorial mysql >PILIH DISTINCT lwn. KUMPULAN OLEH: Manakah yang Lebih Cepat untuk Mendapatkan Nilai Unik dalam MySQL?

PILIH DISTINCT lwn. KUMPULAN OLEH: Manakah yang Lebih Cepat untuk Mendapatkan Nilai Unik dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-15 06:42:43859semak imbas

SELECT DISTINCT vs. GROUP BY: Which is Faster for Unique Value Retrieval in MySQL?

MySQL: PILIH DISTINCT lwn. GROUP BY untuk Nilai Unik

Apabila mendapatkan semula nilai unik daripada jadual MySQL, SELECT DISTINCT dan GROUP BY mungkin kelihatan boleh ditukar ganti, tetapi prestasinya boleh berbeza dengan ketara. Artikel ini membandingkan kecekapan mereka.

Senario: Pendapatan Profesion Unik

Pertimbangkan pertanyaan untuk mendapatkan semula profesion unik daripada jadual users untuk pekerja di 'XYZ':

<code class="language-sql">SELECT u.profession FROM users u
WHERE u.employer = 'XYZ'
ORDER BY u.profession</code>

Untuk memastikan hanya profesion unik dikembalikan, kami boleh menggunakan sama ada SELECT DISTINCT atau GROUP BY:

Pilihan 1: SELECT DISTINCT

<code class="language-sql">SELECT DISTINCT u.profession FROM users u
WHERE u.employer = 'XYZ'
ORDER BY u.profession</code>

Pilihan 2: GROUP BY

<code class="language-sql">SELECT u.profession FROM users u
WHERE u.employer = 'XYZ'
GROUP BY u.profession
ORDER BY u.profession</code>

Pertimbangan Prestasi

Walaupun kedua-dua pertanyaan menghasilkan output yang sama, SELECT DISTINCT secara amnya menawarkan prestasi yang lebih baik. MySQL mengoptimumkan SELECT DISTINCT menggunakan teknik seperti peta bit atau jadual cincang, menapis pendua dengan cekap dalam satu laluan. GROUP BY, sebaliknya, melibatkan pengumpulan baris dan overhed pengagregatan tambahan, yang berpotensi memperlahankan pelaksanaan pertanyaan.

Pengecualian: Bila GROUP BY Mungkin Lebih Cepat

Walaupun SELECT DISTINCT biasanya diutamakan, GROUP BY boleh mengatasinya dalam situasi tertentu. Jika klausa ORDER BY termasuk lajur di luar lajur profession, GROUP BY mungkin menawarkan pengoptimuman yang lebih baik.

Pengesyoran

Untuk mendapatkan semula nilai unik dalam MySQL, SELECT DISTINCT lazimnya ialah pilihan yang lebih cekap. Walau bagaimanapun, menanda aras kedua-dua pertanyaan dengan data khusus anda adalah penting untuk menentukan pendekatan optimum untuk aplikasi anda.

Atas ialah kandungan terperinci PILIH DISTINCT lwn. KUMPULAN OLEH: Manakah yang Lebih Cepat untuk Mendapatkan Nilai Unik dalam MySQL?. 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