Dalam banyak aplikasi pangkalan data, kami akan menghadapi situasi di mana kami perlu menyepadukan data daripada berbilang sumber data. Kenyataan UNION MySQL ialah satu cara untuk menyelesaikan situasi ini, yang membolehkan kami menggabungkan set hasil dua atau lebih pernyataan SELECT menjadi satu. Walaupun ini adalah ciri yang sangat mudah, kenyataan UNION juga boleh menyebabkan isu prestasi pada sistem anda jika tidak dioptimumkan. Artikel ini akan meneroka cara mengoptimumkan UNION untuk meningkatkan prestasi melalui MySQL.
Apabila menggunakan pernyataan UNION, kita boleh memilih untuk menggunakan UNION ALL dan bukannya operasi UNION yang mudah. UNION ALL tidak menyahganda set hasil, yang mengelakkan overhed MySQL menyusun set hasil. Untuk set hasil yang besar, pengoptimuman ini akan memberikan peningkatan prestasi yang ketara.
Andaikan kita perlu menanyakan data daripada dua jadual, kita boleh menggunakan pernyataan berikut:
SELECT column1 FROM table1 UNION SELECT column1 FROM table2;
Gunakan UNION ALL dan bukannya pernyataan di atas:
SELECT column1 FROM table1 UNION ALL SELECT column1 FROM table2;
Jika kita perlu menggabungkan beberapa set hasil, menggunakan pernyataan UNION boleh menyebabkan ketidakcekapan. Oleh itu, kita harus berusaha untuk mengurangkan bilangan kenyataan UNION untuk mempercepatkan pertanyaan.
Sebagai contoh, jika kita perlu menggabungkan data daripada tiga jadual, kita boleh menggunakan pernyataan berikut:
SELECT column1 FROM table1 UNION SELECT column1 FROM table2 UNION SELECT column1 FROM table3;
Anda boleh mempertimbangkan untuk menggunakan kaedah pengoptimuman berikut:
SELECT column1 FROM table1 WHERE condition UNION SELECT column1 FROM table2 WHERE condition UNION SELECT column1 FROM table3 WHERE condition;
Gunakan dalam setiap pernyataan WHERE subquery untuk mengurangkan jumlah data yang perlu diproses oleh pangkalan data.
Untuk mengurangkan beban pada pangkalan data, kita boleh menggunakan operasi LIMIT untuk mengehadkan saiz set hasil yang dikembalikan. Ini mengelakkan MySQL menyusun keseluruhan set hasil, sekali gus meningkatkan prestasi.
Sebagai contoh, kita perlu menggabungkan 10 keping data pertama daripada dua jadual:
SELECT column1 FROM table1 UNION SELECT column1 FROM table2 LIMIT 10;
Ini boleh mengurangkan beban pengisihan dan dengan itu meningkatkan prestasi. Begitu juga, kita juga boleh menggunakan operasi OFFSET untuk mengembalikan data Nth kepada Mth.
Untuk lajur yang digunakan dalam operasi UNION, kami perlu mencipta indeks dalam pangkalan data, yang boleh mempercepatkan pertanyaan dengan sangat baik. Jika kami melakukan operasi KESATUAN di atas meja besar, kami boleh mempertimbangkan untuk mewujudkan indeks bersama.
Memandangkan pernyataan UNION pada asasnya menggabungkan hasil berbilang pertanyaan menjadi satu hasil, MySQL perlu mengoptimumkan dan melaksanakan setiap pertanyaan secara berasingan apabila membuat pertanyaan.
Ringkasnya, dengan menggunakan UNION ALL, mengurangkan bilangan pernyataan UNION, menggunakan LIMIT dan operasi OFFSET, dan mencipta indeks dan kaedah pengoptimuman lain, prestasi operasi UNION MySQL boleh dipertingkatkan. Teknik ini bukan sahaja mempercepatkan pertanyaan tetapi juga mengurangkan beban pada pangkalan data, menjadikan keseluruhan aplikasi lebih cekap.
Atas ialah kandungan terperinci Bagaimana untuk mengoptimumkan UNION melalui MySQL untuk meningkatkan prestasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!