Rumah >pangkalan data >tutorial mysql >Prestasi SQL: Bilakah Saya Harus Menggunakan OR vs. UNION?
Prestasi SQL: UNION lwn. OR perbandingan
Artikel terbaru tentang pengoptimuman pernyataan SQL menimbulkan isu prestasi berkaitan penggunaan OR dan UNION. Walaupun pengarang mengesyorkan menggantikan OR dengan UNION untuk meningkatkan prestasi, pemeriksaan lebih dekat mendedahkan bahawa tidak semua pernyataan OR memerlukan penukaran ini.
Gunakan ATAU
Operator OR menggabungkan syarat supaya jika salah satu syarat adalah benar, hasilnya adalah benar. Dalam SQL, OR boleh digunakan pada lajur dan baris.
Sebagai contoh, pertanyaan berikut mendapatkan semula baris di mana syarikat adalah 'bbc' atau 'itv':
<code class="language-sql">select username from users where company = 'bbc' or company = 'itv';</code>
Pertanyaan ini bersamaan dengan:
<code class="language-sql">select username from users where company IN ('bbc', 'itv');</code>
MySQL boleh memanfaatkan indeks pada lajur syarikat dengan berkesan untuk melaksanakan pertanyaan ini tanpa menggunakan UNION.
Gunakan UNION
UNION menggabungkan hasil berbilang pertanyaan. Apabila digunakan pada baris, UNION mendapatkan semula baris yang memenuhi satu atau lebih kriteria yang ditentukan, tetapi ia mengecualikan baris pendua.
Dalam pertanyaan berikut:
<code class="language-sql">select username from users where company = 'bbc' union select username from users where city = 'London';</code>
UNION membolehkan setiap subkueri menggunakan indeksnya sendiri untuk mengoptimumkan carian. UNION kemudiannya menggabungkan hasil dua subkueri.
Bila hendak menggunakan OR atau UNION
ATAU lebih sesuai apabila syarat berikut dipenuhi:
UNION lebih cekap apabila syarat berikut dipenuhi:
SIHUN DAN KESATUAN
UNION menanggung overhed pengisihan untuk menghapuskan baris pendua. Walau bagaimanapun, overhed ini biasanya menjejaskan sebahagian kecil hasil. Kos pengisihan biasanya kurang daripada pengoptimuman yang diperoleh dengan menggunakan indeks subkueri.
Oleh itu, menentukan kaedah yang paling sesuai (OR lwn. UNION) memerlukan pertimbangan yang teliti terhadap data khusus dan kriteria carian. Menanda aras kedua-dua pendekatan menggunakan MySQL Query Analyzer boleh memberikan cerapan prestasi yang konklusif.
Atas ialah kandungan terperinci Prestasi SQL: Bilakah Saya Harus Menggunakan OR vs. UNION?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!