句DISTINCT
をキーワードに置き換えることができます。GROUP BY
SELECT
title
, series_number
FROM
programme_table
WHERE title LIKE '$letter%'
GROUP BY
title
, series_number
現在、他に 2 つの有効なオプションがあります。Mohammad
によって提案されたオプションは、句の代わりに句を使用することですが、これは実際にはあまり最適ではありません。HAVING
WHERE
このWHERE
句は、レコードを制限するために使用され、使用するインデックスとテーブルを決定するためにクエリ オプティマイザーによっても使用されます。HAVING
は最終結果セットの「フィルタ」であり、 および の後に適用されるORDER BY
ためGROUP BY
、MySQL はこれを使用してクエリを最適化できません。
そのHAVING
ため、最適ではないため、「WHERE」を使用して結果を取得できない場合にのみ使用する必要があります。
quosooDISTINCT
は、キーワードがクエリ内のリストされたすべての列に対して有効であることを指摘しています。これは事実ですが、一般的には推奨されません(パフォーマンスの違いはありません*特定のケースではパフォーマンスの違いがあります***)**。ただし、MySQL オプティマイザは両方に対して同じクエリを吐き出すため、実際のパフォーマンスの違いはありません。
更新
MySQL は両方のクエリに同じ最適化を適用しますが、実際には違いがあります。句DISTINCT
と組み合わせて使用するとLIMIT
、MySQL は十分な一意の行を見つけるとすぐに停止します。それで
SELECT DISTINCT
title
, series_number
FROM
programme_table
WHERE
title LIKE '$letter%'
実際には最良の選択肢です。