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

Performances de MYSQL IN

A partir d'un certain nombre d'enregistrements, le IN prédicat sur un SELECT devient plus rapide que cela sur une liste de constantes.

Voir cet article sur mon blog pour comparer les performances :

Si la colonne utilisée dans la requête dans le IN la clause est indexée, comme ceci :

SELECT  *
FROM    table1
WHERE   unindexed_column IN
        (
        SELECT  indexed_column
        FROM    table2
        )

, alors cette requête est juste optimisée pour un EXISTS (qui n'utilise qu'une seule entrée pour chaque enregistrement de table1 )

Malheureusement, MySQL n'est pas capable de faire HASH SEMI JOIN ou MERGE SEMI JOIN qui sont encore plus efficaces (surtout si les deux colonnes sont indexées).