DISTINCT
が ORDER BY
と組み合わされて用いられると、多くの場合はテンポラリテーブルが必要になります。
DISTINCT
は GROUP BY
をともなう可能性が高いので、SELECT
されないフィールドを ORDER BY
または HAVING
した時に、どのように MySQL
が機能するかを認識しておく必要があります。
See 項6.3.7.3. 「非表示のフィールドに対する GROUP BY
」。
LIMIT row_count
を
DISTINCT
とともに使用した場合、MySQL
は一意のレコードを row_count
行検索するとただちに検索を停止します。
使用するテーブル内のカラムを使用しない場合、MySQL は最初にマッチするレコードを検索するとただちに未使用テーブルのスキャンを停止します。
SELECT DISTINCT t1.a FROM t1,t2 WHERE t1.a=t2.a;
ここでは、t1
が t2
の前に使用され(EXPLAIN
によるチェック)、t2
で最初のレコードが検索されると
t2
からの読み取り(t1
の特定のレコード)を停止します。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.