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!