sql >> データベース >  >> RDS >> Mysql

Mysqlパフォーマンスクエリ

    このクエリはサブクエリを1回だけ実行し、結果を保持してから、それを外部クエリの行と比較すると思います。しかし、MySQLの場合はそうではありません。 MySQLはオプティマイザのインテリジェンスにギャップがあるため、サブクエリを依存サブクエリとして扱います。 外側のクエリの個別の値ごとに再実行します。

    これを修正するには、サブクエリを派生テーブルとしてFROM句に移動します。サブクエリを1回実行し、結果を内部一時テーブルとして保持します。次に、テーブルの他のインスタンスに参加します。

    SELECT `ID`, `CountryCode`, `Name`, `District`, `Population`
    FROM `City`
    JOIN (
        SELECT `CountryCode`, MAX(`Population`) AS `Population`
        FROM `City`
        GROUP BY `CountryCode`
    ) AS _max USING (`CountryCode`, `Population`);
    

    また、2つの列(CountryCode,Population)にCityのインデックスが必要です。 この順序で、GROUPBYクエリを効率的に実行できます。




    1. 計算列を使用して同じビューで別の列を計算する方法

    2. SQL_NO_CACHEを使用する場合

    3. DockerとFlaskでPostgreSQLデータベースを使用すると、どのように機能しますか?

    4. MySQLサーバーはmysliPHPを使用したUPDATE(Huge QUERY、約85MB)でなくなりました