MySQLのパフォーマンスのwikiからtipsによると:あなたが持っているか、GROUP BYを使用することができるときGROUP BYを使用できるときにDISTINCTを使用しないでください。
はDISTINCTは使用しないでください。
誰かがDISTINCTではなくGROUP BYを使用できるクエリの例を投稿できますか?
SELECT DISTINCT Code
FROM YourTable
MySQLのパフォーマンスのwikiからtipsによると:あなたが持っているか、GROUP BYを使用することができるときGROUP BYを使用できるときにDISTINCTを使用しないでください。
はDISTINCTは使用しないでください。
誰かがDISTINCTではなくGROUP BYを使用できるクエリの例を投稿できますか?
SELECT DISTINCT Code
FROM YourTable
対
SELECT Code
FROM YourTable
GROUP BY Code
あなたの結果から、二つの列が常に直接関連していることがわかっている場合、それはこれを行うために、より遅いです:これより
SELECT DISTINCT CustomerId, CustomerName FROM (...)
:
SELECT CustomerId, CustomerName FROM (...) GROUP BY CustomerId
を
2番目のケースではidを比較するだけで済みますが、最初のケースでは両方のフィールドを比較する必要があります。これはMySQL固有のトリックです。他のデータベースでは動作しません。
これはどのようにしてqの答えですか?何か不足していますか? – nawfal
基本的なルール:そう
SELECT DISTINCT a,b,c FROM D
が
SELECT a,b,c FROM D GROUP BY a,b,c
私が間違っている場合は私を修正してください。基本的なルールではありません、GROUP BY句のSELECT句から非集約カラムをすべて入れますか? –
例となり句
、GROUP BYにSELECT句のすべての列を入れてください。
関係顧客(ssnum、名前、郵便番号、住所)PK(ssnum)。 ssnumは社会保障番号です。
SQL:
Select DISTINCT ssnum from customer where zipcode=1234 group by name
このSQL文は、最終結果では郵便番号1234を持っているが、名前でグループ化されたもの、顧客のためのユニークなレコードを返します。
ここでは、DISTINCTは必要ありません。 ssnunは主キーであるため、すでに一意のssnumを選択しているためです。 2人は同じssnumを持つことはできません。
この場合、Select ssnum from customer where zipcode=1234 group by name
は「... DISTINCT .......」よりも優れたパフォーマンスを発揮します。
DISTINCTはDBMSで高価な操作です。
GROUP BYとGROUP BYを使用していない場合の答えの違いは何ですか?あなたはDISTINCTとDISTINCTを持たないときの答えの違いは何ですか?(それは '不明瞭'ですか?) AFAICSでは、クエリーはすべて同じ結果セットを生成しますが(必ずしもすべて同じスピードであるとは限りません) –
これらの2つのクエリは同じではありませんか? 2番目のものでは、別個のIDでなく、別個のIDだけを選択しています。 – DisgruntledGoat
これは他のT-SQLでは動作しませんが、他のT-SQLでは高速に動作しません。 –
もう1つはうまくいきません!!! GROUP BY句に含まれていない列には集計関数が必要です。 –