我需要从语句表中获得每个用户帐户的最大日期,并插入到临时表中。语句表有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