2016-12-14 72 views
1

最大10我在SQL Server 2008中查询200GB数据库中,我有很长一段时间每天都在这个数据库上运行。我的工作选择200GB的SQL Server数据库

一部分是做了非常基本的统计:找到一些标准的最大10。例如,

select ID, sum(value) val 
from table 
group by ID 
order by val desc 

我知道limit在sql server中不可用。所以我的(愚蠢的)方法是获得所有结果,并从sql server management studio中选择前10名。

这是真的真的真的很慢。

任何人都可以提供更快的方式做到这一点?

+1

在TSQL看看TOP关键字https://msdn.microsoft.com/en-us/library/ms189463.aspx – ojf

+0

只使用在TOP您的查询。速度将取决于您的索引。 – scsimon

+0

'从**数据库**'? –

回答

0
with Sel1 as 
(
select ID, sum(value) val 
from database 
group by ID 
order by val desc 
) 
select top 10 * 
from Sel1 
+2

是否CTE提供优势? – ojf

+0

IIRC,SQLS 2008年后的TOP – JohnHC

+3

没有,是没有任何优势的CTE形式应用的顺序,在某些情况下可能会有轻微的性能损失。 ORDER BY总是在TOP之前应用 - 根据ORDER BY条件获得TOP N行。 –

4

你试过:

select top 10 ID, sum(value) val 
from database 
group by ID 
order by sum(value) desc