我正在执行以下查询:
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
必须识别重复的行。基本上有两种方法可以做到这一点。一种是对数据进行排序(可以使用索引隐式完成)。然后重复的行彼此相邻出现。另一种是建立哈希表。重复的行出现在相同的哈希桶中。
对于您的查询,SQL Server 选择对数据进行排序。它恰好看起来像正在订购数据。在多线程系统上,数据可能看起来是排序的,但是当您滚动浏览它时,您会发现排序是分块的(因为数据是从每个线程返回的)。