Jika indeks digunakan dengan benar, maka hampir selalu lebih efisien untuk menggunakan GABUNG. Penekanan ditambahkan karena efisiensi terbaik tidak selalu sama dengan kinerja terbaik.
Namun, sebenarnya tidak ada satu jawaban yang cocok untuk semua; anda harus menganalisis kueri menggunakan EXPLAIN
untuk memastikan bahwa indeks memang sedang digunakan, tidak ada penggunaan tabel temp yang tidak perlu, dll. Dalam beberapa kasus , kondisi bersekongkol untuk membuat kueri yang tidak bisa menggunakan indeks. Dalam kasus tersebut, mungkin lebih cepat untuk memisahkan kueri menjadi beberapa bagian dengan cara yang telah Anda tunjukkan.
Jika saya menemukan kode seperti itu dalam proyek yang ada, saya akan mempertanyakannya:periksa kueri, pikirkan berbagai cara untuk melakukan kueri, pastikan bahwa hal-hal ini telah dipertimbangkan, buat kasus ilmiah yang didukung fakta untuk atau menentang praktik . Pastikan bahwa pengembang asli melakukan uji tuntas mereka, karena tidak menggunakan JOIN secara dangkal menunjuk ke database atau desain kueri yang buruk. Namun, pada akhirnya, hasilnya berbicara dengan keras dan jika semua pengoptimalan dan koreksi masih menghasilkan penggabungan yang lebih lambat daripada yang disediakan oleh fragmen kueri, maka solusi yang lebih cepat akan berlaku. Patokan dan tindak lanjuti hasil benchmark; tidak ada kasus dalam desain perangkat lunak bahwa Anda harus menukar kinerja yang buruk dengan kepatuhan pada aturan sewenang-wenang tentang apa yang harus atau tidak boleh Anda lakukan. Metode dengan kinerja terbaik adalah metode terbaik.