sql >> Databasteknik >  >> RDS >> Mysql

MySQL-prestanda - IN-klausul kontra lika med (=) för ett enskilt värde

De flesta av de andra svaren ger inget avgörande, bara spekulationer. Så, baserat på goda råd från @Namphibians svar , körde jag en EXPLAIN på vissa frågor som liknar de i OP.

Resultaten är nedan:

EXPLAIN för en fråga med = 1 :

EXPLAIN för en fråga med IN(1) :

EXPLAIN för en fråga med IN(1,2,3) :

Som du kan se optimerar MySQL IN(1) att vara samma som = 1 i den här typen av fråga. @mes svar tycks dock indikera att detta kanske inte alltid är fallet med mer komplexa frågor.

Så, för de som var för lata för att köra EXPLAIN sig själva, nu vet du. Och ja, du kanske vill köra EXPLAIN på din egen fråga för att vara säker på att det hanteras på detta sätt. :-)



  1. Hur kan jag göra tre tabell JOINs i en UPDATE-fråga?

  2. Tid- och datumstämpel i en MySQL-tabellrad

  3. 4 sätt att infoga flera rader i Oracle

  4. Hur kan jag ställa in ett maximalt antal rader i MySQL-tabellen?