2016-12-14 71 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