Sql server 哪个select SQL查询更快:排序的还是未排序的?

Sql server 哪个select SQL查询更快:排序的还是未排序的?,sql-server,Sql Server,如果我发出这样的查询 案例A: select top 100 * from visitors order by visitdate desc select * from visitors select top 100 * from visitors i:) select * from visitors order by visitdate desc ii:) 案例B: select top 100 * from visitors order by visitdate desc

如果我发出这样的查询

案例A:

select top 100 * from visitors
order by visitdate desc
select * from visitors
select top 100 * from visitors
i:)

select * from visitors
     order by visitdate desc
ii:)

案例B:

select top 100 * from visitors
order by visitdate desc
select * from visitors
select top 100 * from visitors
i:)

ii:)

编辑1:

select top 100 * from visitors
order by visitdate desc
select * from visitors
select top 100 * from visitors
在A i或ii的情况下,哪一个更快在B:i或ii的情况下

方面,CPU使用(计算时间)和第一次输出交付 未完成向客户端的输出传递

编辑2:
我假设它没有被索引

在几乎所有的情况下,ii会更快,尽管不会太快

在几乎所有的情况下,ii会更快,尽管不会太快

假设你有超过100个访问者,ii会更快


至于
orderby
子句,这取决于您是否在该字段上有索引。

假设您有100多个访问者,ii将更快


至于
order by
子句,这取决于您是否在该字段上有索引。

我看不出这两个集合之间有什么区别。因此,您会问,取回100行是否比取回所有行更快?我认为这取决于表中有多少行。是的,但我指的是案例A的计算时间,如果在
visitdate
上有索引,选项2会更快。对于案例B,选项#2无效,因为如果没有
ORDER BY
子句,就不应该有
TOP..
——您想要前100行,但您并不是说这些行的排序依据是什么。。。。。你只会得到随机数据。但是选项B-#2也会更快,前提是该表实际上有100多行。对不起,我不知道这是什么意思。您可以使用
设置统计时间
并查看
CPU时间
。这取决于您返回的行数。我看不出这两组之间有什么区别。因此,您要问的是,取回100行是否比取回所有行更快?我认为这取决于表中有多少行。是的,但我指的是案例A的计算时间,如果在
visitdate
上有索引,选项2会更快。对于案例B,选项#2无效,因为如果没有
ORDER BY
子句,就不应该有
TOP..
——您想要前100行,但您并不是说这些行的排序依据是什么。。。。。你只会得到随机数据。但是选项B-#2也会更快,前提是该表实际上有100多行。对不起,我不知道这是什么意思。您可以使用
设置统计时间
并查看
CPU时间
。这取决于返回的行数。这是一个非常模糊的“答案”1。我将获得所有行,因此在使用IO(将数据移动到屏幕或通过网络)时,速度总是较慢。2.我可以使用逻辑(取决于SQL后端的实现)进行比完全读取数据更快的排序table@SrdjanGrubor:“可以使用逻辑”-也是模糊的。如果它没有索引-它将使用一些logN排序进行完全扫描,如果它被索引-将读取索引。在这些情况下,逻辑是什么?这是一个非常模糊的“答案”1。我将获得所有行,因此在使用IO(将数据移动到屏幕或通过网络)时,速度总是较慢。2.我可以使用逻辑(取决于SQL后端的实现)进行比完全读取table@SrdjanGrubor:“可以使用逻辑”-也是含糊不清的。如果它没有索引-它将通过一些logN排序进行完全扫描,如果它被索引-索引将被读取。在这些情况下,逻辑是什么?