获取每个用户的最大日期记录并将其插入临时表-性能问题



我需要从语句表中获得每个用户帐户的最大日期,并插入到临时表中。语句表有4000多万条记录。我尝试了以下查询,花了4分钟多的时间。有更好的方法吗?

select useraccount, max(date)
into #temptable
from statement
group by useraccount

分组可能很昂贵。4分钟对于处理和创建一个大表来说似乎并没有那么糟糕。但如果你在(useraccount, date)上有一个索引,你可以试试:

 select useraccount, date
 into #temptable
 from statement s
 where date = (select max(s2.date) from statement s2 where s2.useraccount = s.useraccount);

尝试创建一个非聚集列存储索引,其中useraccount和date列如下

CREATE NONCLUSTERED COLUMNSTORE INDEX   [NCCIX_statement_useraccount_date] ON [dbo].[statement]
(
   [useraccount]
   ,[date]
)WITH (DROP_EXISTING = OFF, COMPRESSION_DELAY = 0)
GO

相关内容

  • 没有找到相关文章

最新更新