sql >> Databáze >  >> RDS >> Mysql

Výkon MYSQL IN

Počínaje určitým počtem záznamů IN predikát nad SELECT se stává rychlejší než to nad seznamem konstant.

Porovnání výkonu naleznete v tomto článku na mém blogu:

Pokud je sloupec použitý v dotazu v IN klauzule je indexována takto:

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

, pak je tento dotaz pouze optimalizován na EXISTS (který používá pouze jeden záznam pro každý záznam z table1 )

Bohužel MySQL není schopen provést HASH SEMI JOIN nebo MERGE SEMI JOIN které jsou ještě efektivnější (zejména pokud jsou oba sloupce indexovány).



  1. Poskytovatel není kompatibilní s verzí klienta Oracle

  2. Práce s vytvářením indexů pomocí MongoEngine v Pythonu

  3. Nelze načíst ověřovací plugin 'caching_sha2_password'

  4. Musí být definován parametr '@myLeft'