sql >> Database teknologi >  >> RDS >> Mysql

Kan MySQL bruge indekser, når der er ELLER mellem betingelser?

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.



  1. En biblioteksdatamodel

  2. I Postgresql, fremtving unik på kombination af to kolonner

  3. Innodb; flere datamapper

  4. Sporing af synkrone statistikopdateringer