首页 > 解决方案 > 获取每个用户的最大日期记录并将其插入临时表 - 性能问题

问题描述

我需要从语句表中获取每个用户帐户的 maxdate 并插入到临时表中。语句表有超过 4000 万条记录。我尝试了以下查询,耗时超过 4 分钟。有没有更好的方法来做到这一点?

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

标签: sqlsql-serversqlperformance

解决方案


分组可能很昂贵。而且 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);

推荐阅读