sql >> Base de Datos >  >> RDS >> Mysql

Rendimiento de MYSQL IN

A partir de un cierto número de registros, el IN predicado sobre un SELECT se vuelve más rápido que eso en una lista de constantes.

Consulte este artículo en mi blog para comparar el rendimiento:

Si la columna utilizada en la consulta en IN cláusula está indexada, así:

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

, entonces esta consulta solo está optimizada para EXISTS (que usa solo una entrada para cada registro de table1 )

Desafortunadamente, MySQL no es capaz de hacer HASH SEMI JOIN o MERGE SEMI JOIN que son aún más eficientes (especialmente si ambas columnas están indexadas).