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

MySQLでUNIONクエリが非常に遅いのはなぜですか?

    クエリにORDER BY … LIMITが含まれていますか 条項?

    ORDER BY … LIMITを入力した場合 UNIONの後 、UNION全体に適用されます 、およびこの場合、インデックスは使用できません。

    idの場合 は主キーであり、このクエリは即座に実行されます:

    SELECT  *
    FROM    table
    ORDER BY id
    LIMIT 1
    

    、しかしこれはしません:

    SELECT  *
    FROM    table
    UNION ALL
    SELECT  *
    FROM    table
    ORDER BY id
    LIMIT 1
    

    これもORDER BYが原因のようです 。小さいセットの並べ替えは、大きいセットよりも高速です。

    結果のセットを並べ替える必要がありますか?

    そうでない場合は、最後のORDER BYを削除してください 。



    1. SQL Serverで既存の列を計算列に変更する(T-SQLの例)

    2. OracleSQLピボットクエリ

    3. MySQL InnoDBテーブルが破損しています-修正方法は?

    4. TIME_TO_SEC()の例– MySQL