Sql server 哪个select SQL查询更快:排序的还是未排序的?
如果我发出这样的查询 案例A: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
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排序进行完全扫描,如果它被索引-索引将被读取。在这些情况下,逻辑是什么?