Dalam pengoptimuman pangkalan data, biasanya disyorkan untuk menggantikan pernyataan OR dengan pernyataan UNION. Walau bagaimanapun, potensi kesan prestasi pendekatan ini adalah satu perkara yang membimbangkan.
Artikel ini mengesyorkan menggunakan UNION untuk menggantikan pernyataan OR apabila menanyakan jadual. Contohnya:
<code class="language-sql">select username from users where company = 'bbc' or company = 'itv';</code>
boleh ditulis semula sebagai:
<code class="language-sql">select username from users where company = 'bbc' union select username from users where company = 'itv';</code>
Berdasarkan output EXPLAIN, UNION nampaknya menggandakan kerja. Walau bagaimanapun, ini tidak berlaku dalam semua kes.
Untuk keadaan ringkas ATAU yang melibatkan hanya satu lajur, MySQL boleh menggunakan indeks dengan cekap untuk mendapatkan semula data. Dalam kes ini, UNION tidak membawa faedah prestasi yang ketara.
Kelebihan UNION ialah apabila keadaan OR melibatkan lajur yang berbeza. Pertimbangkan pertanyaan berikut:
<code class="language-sql">select username from users where company = 'bbc' or city = 'London';</code>
Dalam kes ini, MySQL tidak boleh menggunakan dua indeks (satu untuk syarikat dan satu untuk bandar) pada masa yang sama. UNION menyediakan cara untuk membahagikan carian kepada dua subkueri, yang setiap satunya boleh memanfaatkan indeks yang sepadan.
Walaupun UNION boleh mengoptimumkan keadaan kompleks ATAU dengan berkesan, ia tidak semestinya menggandakan beban kerja. Pendekatan terbaik bergantung pada pertanyaan khusus dan pengedaran data dalam jadual. Adalah disyorkan untuk menilai penyataan OR dan UNION dalam Penganalisis Pertanyaan MySQL untuk menentukan penyelesaian terbaik.
Atas ialah kandungan terperinci Prestasi SQL: Bilakah Saya Harus Menggunakan UNION Daripada ATAU?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!