Mysql
 sql >> Base de données >  >> RDS >> Mysql

jointure interne et performances de la clause where in() ?

Dépend de votre moteur SQL. Les systèmes SQL plus récents dotés d'optimiseurs de requêtes raisonnables réécriront très probablement les deux requêtes dans le même plan. En règle générale, une sous-requête (votre deuxième requête) est réécrite à l'aide d'une jointure (la première requête).

Dans les moteurs SQL simples qui n'ont peut-être pas de bons optimiseurs de requêtes, la jointure devrait être plus rapide car ils peuvent exécuter des sous-requêtes dans une table temporaire en mémoire avant d'exécuter la requête externe.

Dans certains moteurs SQL qui ont une empreinte mémoire limitée, cependant, la sous-requête peut être plus rapide car elle ne nécessite pas de jointure, ce qui produit plus de données.

Donc, en résumé, ça dépend.