Forespørgselsplanen for OR
store og små bogstaver viser, at MySQL
bruger faktisk indekser, så åbenbart ja, det kan det i hvert fald i dette tilfælde. Det virker helt rimeligt, fordi der er et indeks på seen
og id
er PK.
Hvis "logiske og rimelige forklaringer" modsiges af virkeligheden, så er det sikkert at antage, at logikken er mangelfuld, eller at forklaringerne er forkerte eller uanvendelige. Ydeevne er notorisk svær at forudsige; præstationstest er afgørende, hvor hastighed er vigtig.
Du bør bruge den, der tester hurtigere på input, der i tilstrækkelig grad modellerer det, som programmet vil se i reel brug.
Bemærk dog også, at dine to forespørgsler ikke er semantisk ækvivalente:hvis rækken med id = 5204
har også seen = 3
derefter OR
forespørgslen returnerer den én gang, men UNION ALL
forespørgslen returnerer den to gange. Det er meningsløst at vælge mellem korrekt kode og forkert kode på et andet grundlag end hvilken der er korrekt.