Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengehadkan Keputusan Setiap Syarikat dengan Cekap Apabila Menggunakan UNION dalam MySQL?
Mengoptimumkan Pertanyaan MySQL dengan UNION dan LIMIT untuk Carian Kerja Berbilang Syarikat
Pencapaian data yang cekap daripada pangkalan data yang besar memerlukan pembinaan pertanyaan yang teliti. Contoh ini memfokuskan pada mengambil penyenaraian kerja daripada berbilang syarikat, mengehadkan keputusan kepada maksimum 10 pekerjaan bagi setiap syarikat.
Pendekatan naif menggunakan UNION DISTINCT
dengan satu klausa LIMIT
akan mengehadkan jumlah bilangan hasil, bukan keputusan setiap syarikat. Penyelesaiannya terletak pada penggunaan ORDER BY
dan LIMIT
dalam setiap pernyataan SELECT
individu bagi pertanyaan UNION
:
<code class="language-sql">( SELECT c.name, j.title, j.`desc`, j.link FROM jobs_job j INNER JOIN companies_company c ON j.company_id = c.id WHERE c.name IN ('Company1') ORDER BY name, title LIMIT 0, 10 ) UNION ALL ( SELECT c.name, j.title, j.`desc`, j.link FROM jobs_job j INNER JOIN companies_company c ON j.company_id = c.id WHERE c.name IN ('Company2') ORDER BY name, title LIMIT 0, 10 );</code>
Pertanyaan yang disemak ini memastikan klausa LIMIT
beroperasi secara bebas pada data kerja setiap syarikat, mengembalikan sehingga 10 pekerjaan bagi setiap syarikat. Perhatikan penggunaan UNION ALL
yang secara amnya lebih cekap daripada UNION DISTINCT
melainkan hasil yang berbeza diperlukan secara jelas. Pendekatan ini mengendalikan kes di mana syarikat mempunyai kurang daripada 10 pekerjaan, mengembalikan semua pekerjaan yang tersedia untuk syarikat itu.
Untuk fleksibiliti yang dipertingkatkan dan senario yang lebih kompleks, pertimbangkan untuk memanfaatkan fungsi tetingkap ROW_NUMBER()
MySQL. ROW_NUMBER()
memberikan kedudukan unik kepada setiap baris dalam partition yang ditentukan (dalam kes ini, setiap syarikat), mendayakan penapisan dan pengumpulan hasil yang canggih.
Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Keputusan Setiap Syarikat dengan Cekap Apabila Menggunakan UNION dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!