Rencana kueri untuk OR
case muncul untuk menunjukkan bahwa MySQL
memang menggunakan indeks, jadi ternyata ya, itu bisa dilakukan, setidaknya dalam kasus ini. Tampaknya sepenuhnya masuk akal, karena ada indeks di seen
, dan id
adalah PK.
Jika "penjelasan logis dan masuk akal" bertentangan dengan kenyataan, maka aman untuk berasumsi bahwa logika itu cacat atau penjelasannya salah atau tidak dapat diterapkan. Kinerja sangat sulit diprediksi; pengujian kinerja sangat penting di mana kecepatan penting.
Anda harus menggunakan yang menguji lebih cepat pada input yang secara memadai memodelkan apa yang akan dilihat program dalam penggunaan nyata.
Namun, perhatikan juga bahwa dua kueri Anda tidak setara secara semantik:jika baris dengan id = 5204
juga telah seen = 3
lalu OR
kueri akan mengembalikannya sekali, tetapi UNION ALL
kueri akan mengembalikannya dua kali. Tidak ada gunanya memilih antara kode yang benar dan kode yang salah atas dasar apa pun selain mana yang benar.