DISTINCT が
        ORDER BY
        と組み合わされて用いられると、多くの場合は一時テーブルが必要になります。
      
        DISTINCT は
        GROUP BY
        をともなう可能性が高いので、選択されないカラムを
        ORDER BY または
        HAVING
        したときに、どのように MySQL
        が機能するかを認識しておく必要があります。項7.12.3. 「非常時カラムとの GROUP BY
        および HAVING」
        を参照してください。
      
        ほとんどの場合、DISTINCT
        節は GROUP BY
        の特殊ケースと考えられます。たとえば、下記の
        2 クエリーは等価です
      
SELECT DISTINCT c1, c2, c3 FROM t1 WHERE c1 >const; SELECT c1, c2, c3 FROM t1 WHERE c1 >constGROUP BY c1, c2, c3;
        等価であることによって、GROUP
        BY クエリーに適用できる最適化は
        DISTINCT
        節のあるクエリーにも適用できます。さらなる
        DISTINCT
        クエリー最適化の可能性については、項4.2.14. 「GROUP BY 最適化」を参照してください。
      
        LIMIT
        を
        row_countDISTINCT
        とあわせて使用した場合、MySQL は一意の
        row_count
        行を検索するとただちに停止します。
      
        使用するテーブル内のカラムを使用しない場合、MySQL
        は最初にマッチするレコードを検索するとただちに未使用テーブルのスキャンを停止します。ここでは、t1
        が t2 の前に使用され
        (EXPLAIN
        による確認)、t2
        で最初のレコードが検索されると
        t2 からの読み取り
        (t1 の特定のレコード)
        を停止します。
      
SELECT DISTINCT t1.a FROM t1, t2 where t1.a=t2.a;

