Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengehadkan Keputusan Setiap Syarikat dengan Cekap Apabila Menggunakan UNION dalam MySQL?

Bagaimana untuk Mengehadkan Keputusan Setiap Syarikat dengan Cekap Apabila Menggunakan UNION dalam MySQL?

Patricia Arquette
Lepaskan: 2025-01-14 13:02:51
asal
953 orang telah melayarinya

How to Efficiently Limit Results Per Company When Using UNION in 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>
Salin selepas log masuk

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!

sumber:php.cn
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