私は次のクエリを実行しています:
SELECT DISTINCT column1, colum2 FROM table.... WHERE....
しかし、返される結果が正しいものであることを望んでいません。SQLがこの行をソートしないようにするにはどうすればよいですか?
私は次のクエリを実行しています:
SELECT DISTINCT column1, colum2 FROM table.... WHERE....
しかし、返される結果が正しいものであることを望んでいません。SQLがこの行をソートしないようにするにはどうすればよいですか?
それらはソート自体を取得していません。テーブルにあるインデックスを使用して戻っているか、テーブル全体をスキャンしているだけです。ランダムに並べ替えたい場合は、クエリで明示的に指定する必要があります。
SELECT *
FROM (SELECT DISTINCT column1, colum2
FROM table....
WHERE....) A
ORDER BY NEWID()
SELECT DISTINCT(またはその他)にはORDER BYは必要ありません...どのような順序が表示されていますか?データがシステムに入力されたときに注文された可能性があります。
select distinct
重複する行を識別する必要があります。これを行うには、基本的に 2 つの方法があります。1 つは、データをソートすることです (これは、インデックスを使用して暗黙的に行うことができます)。次に、重複した行が隣り合わせに表示されます。もう 1 つは、ハッシュ テーブルを作成することです。重複する行が同じハッシュ バケットに表示されます。
クエリの場合、SQL Server はデータの並べ替えを選択しています。データが順序付けられているように見えます。マルチスレッド システムでは、データが並べ替えられているように見える場合がありますが、スクロールすると、並べ替えがチャンクになっていることがわかります (データは各スレッドから返されるため)。