sql >> Database >  >> RDS >> Mysql

Prestaties van MYSQL IN

Vanaf een bepaald aantal records wordt de IN predikaat boven een SELECT wordt sneller dan dat over een lijst met constanten.

Zie dit artikel in mijn blog voor prestatievergelijking:

Als de kolom die in de zoekopdracht wordt gebruikt in de IN clausule is als volgt geïndexeerd:

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

, dan is deze zoekopdracht gewoon geoptimaliseerd tot een EXISTS (die slechts één invoer gebruikt voor elk record uit table1 )

Helaas, MySQL kan HASH SEMI JOIN niet doen of MERGE SEMI JOIN die nog efficiënter zijn (vooral als beide kolommen geïndexeerd zijn).



  1. Meerdere databases tegelijk opvragen

  2. MySQL-server beveiligen

  3. Is er een mechanisme om invoegen in tabel uit te schakelen?

  4. MySQL-back-up- en herstelopdrachten voor databasebeheer