Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Desempenho do MYSQL IN


A partir de um certo número de registros, o IN predicado sobre um SELECT torna-se mais rápido do que em uma lista de constantes.

Veja este artigo no meu blog para comparação de desempenho:

Se a coluna usada na consulta no IN cláusula é indexada, assim:
SELECT  *
FROM    table1
WHERE   unindexed_column IN
        (
        SELECT  indexed_column
        FROM    table2
        )

, essa consulta será otimizada apenas para um EXISTS (que usa apenas uma entrada para cada registro de table1 )

Infelizmente, MySQL não é capaz de fazer HASH SEMI JOIN ou MERGE SEMI JOIN que são ainda mais eficientes (especialmente se ambas as colunas forem indexadas).