Mysql
 sql >> база данни >  >> RDS >> Mysql

Производителност на MySQL - IN клауза срещу Equals (=) за една стойност

Повечето от другите отговори не дават нищо убедително, а само спекулации. И така, въз основа на добрия съвет от отговора на @Namphibian , пуснах EXPLAIN за някои заявки, подобни на тези в ОП.

Резултатите са по-долу:

EXPLAIN за заявка с = 1 :

EXPLAIN за заявка с IN(1) :

EXPLAIN за заявка с IN(1,2,3) :

Както можете да видите, MySQL оптимизира IN(1) да бъде същото като = 1 в този вид заявка. отговорът на @mes изглежда обаче показва, че това може да не винаги е така при по-сложни заявки.

Така че, за тези, които бяха твърде мързеливи да стартират EXPLAIN себе си, сега знаете. И да, може да искате да стартирате EXPLAIN на собствена заявка, за да сте сигурни, че се обработва по този начин. :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка 1130 в mysql

  2. Не може да се свърже с нито един от посочените MySQL хостове

  3. MySQL свързване на таблици в група по проблем със сума

  4. MYSQL Случай в оператор select за проверка на null

  5. Импортиране на голям sql файл в MySql чрез команден ред