sql >> Databáze >  >> RDS >> Mysql

Výkon MySQL – klauzule IN vs. rovná se (=) pro jednu hodnotu

Většina ostatních odpovědí neposkytuje nic průkazného, ​​pouze spekulace. Takže na základě dobré rady z odpovědi @Namphibian , spustil jsem EXPLAIN na některé dotazy podobné těm v OP.

Výsledky jsou níže:

EXPLAIN pro dotaz s = 1 :

EXPLAIN pro dotaz s IN(1) :

EXPLAIN pro dotaz s IN(1,2,3) :

Jak můžete vidět, MySQL optimalizuje IN(1) být stejný jako = 1 v tomto druhu dotazu. odpověď @mes Zdá se, že to naznačuje, že to nemusí být vždy případ složitějších dotazů.

Takže pro ty, kteří byli příliš líní spustit EXPLAIN sami, teď to víte. A ano, možná budete chtít spustit EXPLAIN na svůj vlastní dotaz, abyste se ujistili, že je takto zpracováno. :-)



  1. Mapování JPA:QuerySyntaxException:foobar není namapován...

  2. Jaký je nejlepší způsob, jak vrátit hodnoty enum v MySQL?

  3. Jak vytvořit jedinečné omezení ve sloupci pro již existující tabulku - SQL Server / Výukový program TSQL, část 97

  4. Oprávnění odepřeno při připojování svazku Docker v OSX