DISTINCT combined with ORDER
        BY needs a temporary table in many cases.
      
        Note that because DISTINCT may use
        GROUP BY, you should be aware of how MySQL
        works with columns in ORDER BY or
        HAVING clauses that are not part of the
        selected columns. See Sección 12.10.3, “GROUP BY con campos escondidos”.
      
        In most cases, a DISTINCT clause can be
        considered as a special case of GROUP BY. For
        example, the following two queries are equivalent:
      
SELECT DISTINCT c1, c2, c3 FROM t1 WHERE c1 >const; SELECT c1, c2, c3 FROM t1 WHERE c1 >constGROUP BY c1, c2, c3;
        Due to this equivalence, the optimizations applicable to
        GROUP BY queries can be also applied to
        queries with a DISTINCT clause. Thus, for
        more details on the optimization possibilities for
        DISTINCT queries, see
        Sección 7.2.11, “Cómo optimiza MySQL los GROUP BY”.
      
        When combining LIMIT
         with
        row_countDISTINCT, MySQL stops as soon as it finds
        row_count unique rows.
      
        If you don't use columns from all tables named in a query, MySQL
        stops scanning the not-used tables as soon as it finds the first
        match. In the following case, assuming that
        t1 is used before t2
        (which you can check with EXPLAIN), MySQL
        stops reading from t2 (for any particular row
        in t1) when the first row in
        t2 is found:
      
SELECT DISTINCT t1.a FROM t1, t2 where t1.a=t2.a;
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

