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

MySQL:proč tento dotaz max. N členů na skupinu funguje?

Korelovaný dílčí dotaz vrátí počet osob se stejnou zemí a vyšším ID. Pokud to tedy porovnáte s < 2 vyberete pouze dvě nejvyšší ID pro každou zemi. Lepší představu o tom můžete získat, když se podíváte na výsledky výběru poddotazu namísto použití jako omezení:

SELECT co.id, co.person, co.country,
    (
        SELECT COUNT(*)
        FROM person ci
        WHERE  co.country = ci.country      -- controlling grouping column
        AND co.id < ci.id                       -- controlling min or max 
    ) AS higher_ids
FROM person co

0https://dbfiddle.uk/?rdbms9ebdfe/?rdbms9ebfeb>0dbms9e94739616

Všimněte si, že pokud neexistují optimalizace, které konkrétně hledají tento vzor, ​​o čemž silně pochybuji, tento dotaz bude O(N^2).



  1. cakephp 3.0 získá hodnoty ve dvou sloupcích jako jeden

  2. 2 způsoby, jak vybrat řádky, které odpovídají všem položkám v seznamu (T-SQL)

  3. ORA-01017 Neplatné uživatelské jméno/heslo při připojování k 11g databázi z 9i klienta

  4. Co je skenování bitmapové haldy v plánu dotazů?