sql >> Databasteknik >  >> RDS >> Mysql

MySQL IN-operatörens prestanda på (stort?) antal värden

Generellt sett, om IN listan blir för stor (för något dåligt definierat värde på 'för stort' som vanligtvis är i området 100 eller mindre), blir det mer effektivt att använda en join, skapa en tillfällig tabell om det behövs för att hålla siffrorna.

Om siffrorna är en tät uppsättning (inga luckor - vilket exempeldatan antyder), kan du göra det ännu bättre med WHERE id BETWEEN 300 AND 3000 .

Men förmodligen finns det luckor i uppsättningen, då kan det vara bättre att gå med listan över giltiga värden trots allt (om inte luckorna är relativt få till antalet, i vilket fall du kan använda:

WHERE id BETWEEN 300 AND 3000 AND id NOT BETWEEN 742 AND 836

Eller vad luckorna nu är.



  1. Mest effektiva T-SQL sättet att vaddera en varchar till vänster till en viss längd?

  2. Hur man tar bort en del av strängen i Oracle

  3. Hur man byter namn på en tabellkolumn i Oracle 10g

  4. Hur löser man tvetydiga kolumnnamn när man hämtar resultat?