sql >> Databasteknik >  >> RDS >> Mysql

Kan MySQL använda Index när det finns ELLER mellan villkoren?

Frågeplanen för OR skiftläge verkar indikera att MySQL använder verkligen index, så uppenbarligen ja, det kan det göra, åtminstone i det här fallet. Det verkar helt rimligt, eftersom det finns ett index på seen och id är PK.

Om "logiska och rimliga förklaringar" motsägs av verkligheten, då är det säkert att anta att logiken är felaktig eller att förklaringarna är felaktiga eller otillämpliga. Prestandan är notoriskt svår att förutsäga; prestandatestning är viktigt där hastighet är viktigt.

Du bör använda den som testar snabbare på indata som adekvat modellerar det som programmet kommer att se i verklig användning.

Observera dock att dina två frågor inte är semantiskt ekvivalenta:om raden med id = 5204 har också seen = 3 sedan OR query returnerar den en gång, men UNION ALL fråga kommer att returnera den två gånger. Det är meningslöst att välja mellan korrekt kod och felaktig kod på någon annan grund än vilken som är korrekt.



  1. Naturlig koppling i SQL Server

  2. MySQL-uppdatering eller byt namn på en nyckel i JSON

  3. Anrop till odefinierad funktion mysql_query()

  4. MySQL matchar 2 av 5 fält