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

MySQLでSELECTDISTINCTとUNIONDISTINCTを組み合わせる-効果はありますか?

    実行計画を確認する必要があります。ただし、実行計画は異なると思います。少なくとも、状況によっては実行計画が異なるはずです。

    最初のクエリ:

    SELECT DISTINCT a, b, c FROM table1
    UNION DISTINCT
    SELECT DISTINCT a, b, c FROM table2
    

    table1(a, b, c)のインデックスを簡単に利用できます およびtable2(a, b, c) 最後のUNIONを実行します 。これにより、データのサイズが縮小され、最終的な結合が高速化されます。 2番目のクエリにはこの利点はありません。

    実際、このクエリを作成する最も効率的な方法は、おそらく2つのインデックスを作成し、次を使用することです。

    SELECT DISTINCT a, b, c FROM table1 t1
    UNION ALL
    SELECT DISTINCT a, b, c
    FROM table2 t2
    WHERE NOT EXISTS (SELECT 1 FROM table1 t1 WHERE t2.a = t1.a and t2.b = t1.b and t2.c = t1.c)
    

    NULLを処理する可能性はありますが、これはほとんど同じです。 2番目の表の値は少し異なります。




    1. PL/SQLでの表変換/フィールド解析

    2. FPDFセルポジショニング

    3. AJAXでのエンコーディングの問題

    4. OVER関数とPARTITIONBY関数を使用したデータのグループ化