我正在进行以下查询:
SELECT DISTINCT column1, colum2 FROM table.... WHERE....
但我不希望返回的结果是有序的。 如何避免sql 排序这行?
答案 0 :(得分:8)
他们本身并没有得到排序,他们只是使用你桌子上的任何索引返回,或者只是扫描整个表格。如果您希望它们随机排序,那么您需要在查询中明确说出:
SELECT *
FROM (SELECT DISTINCT column1, colum2
FROM table....
WHERE....) A
ORDER BY NEWID()
答案 1 :(得分:1)
SELECT DISTINCT(或其他任何东西)不需要ORDER BY ......你看到了什么样的排序?可能只是数据在输入系统时被排序。
答案 2 :(得分:1)
select distinct
必须标识重复的行。基本上有两种方法可以做到这一点。一种是对数据进行排序(可以使用索引隐式完成)。然后重复的行显示在彼此旁边。另一种是构建哈希表。重复的行显示在相同的散列桶中。
对于您的查询,SQL Server选择对数据进行排序。它看起来好像正在订购数据。在多线程系统上,数据可能看排序,但是当您滚动它时,您会发现排序是块(因为每个线程都返回数据)。