Het zoekplan voor de OR
case lijkt aan te geven dat MySQL
gebruikt inderdaad indexen, dus het is duidelijk ja, dat kan, althans in dit geval. Dat lijkt heel redelijk, want er is een index op seen
, en id
is de PK.
Als "logische en redelijke verklaringen" door de werkelijkheid worden tegengesproken, is het veilig om aan te nemen dat de logica gebrekkig is of dat de verklaringen verkeerd of niet van toepassing zijn. Prestaties zijn notoir moeilijk te voorspellen; prestatietests zijn essentieel wanneer snelheid belangrijk is.
U moet degene gebruiken die test sneller op invoer die adequaat modelleert wat het programma in echt gebruik zal zien.
Merk echter ook op dat uw twee zoekopdrachten semantisch niet equivalent zijn:als de rij met id = 5204
heeft ook seen = 3
dan de OR
query zal het één keer retourneren, maar de UNION ALL
query zal het twee keer retourneren. Het heeft geen zin om te kiezen tussen de juiste code en de onjuiste code op een andere basis dan de juiste.