选择200GB SQL server数据库中最大的10个

选择200GB SQL server数据库中最大的10个,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在查询SQL server 2008中的200GB数据库。很长一段时间以来,我每天都要处理这个数据库 我工作的一部分是做非常基本的统计:根据一些标准找出最大的10个。比如说, select ID, sum(value) val from table group by ID order by val desc 我知道sql server中没有limit。因此,我(愚蠢的)方法是获取所有结果,并从SQLServerManagementStudio中手动选择前10名 这真的很慢 有人能提供一种更

我正在查询SQL server 2008中的200GB数据库。很长一段时间以来,我每天都要处理这个数据库

我工作的一部分是做非常基本的统计:根据一些标准找出最大的10个。比如说,

select ID, sum(value) val
from table
group by ID
order by val desc
我知道sql server中没有
limit
。因此,我(愚蠢的)方法是获取所有结果,并从SQLServerManagementStudio中手动选择前10名

这真的很慢

有人能提供一种更快的方法吗?

您是否尝试过:

with Sel1 as
(
select ID, sum(value) val
from database
group by ID
order by val desc
)
select top 10 *
from Sel1
select top 10 ID, sum(value) val
from database
group by ID
order by sum(value) desc
您是否尝试过:

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

看看TSQL中的TOP关键字,在查询中使用TOP即可。速度将取决于您的索引。
来自**数据库**
?使用Select top 10ID,sum(value)作为BLAH中的val……查看TSQL中的top关键字,只需在查询中使用top即可。速度将取决于您的索引。
来自**数据库**
?使用Select top 10 ID,sum(value)作为BLAH中的val……CTE是否提供优势?IIRC,SQLS 2008在TOPNo之后应用order by,CTE表单没有优势,在某些情况下可能会有轻微的性能影响。ORDER BY总是在TOP is之前应用-根据ORDER BY条件,您可以得到前N行。@LaughingVergil看起来我没有正确地回忆XDDDOh,就像从来没有发生过一样。;-)在那里,这样做了,错放了t恤。CTE是否提供了优势?IIRC,SQLS 2008在TOPNo之后应用订单,CTE表单没有优势,在某些情况下可能会有轻微的性能影响。ORDER BY总是在TOP is之前应用-根据ORDER BY条件,您可以得到前N行。@LaughingVergil看起来我没有正确地回忆XDDDOh,就像从来没有发生过一样。;-)在那里,那样做了,把t恤放错地方了。