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

问题描述 投票:0回答:2

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

     select useraccount, max(date) into #temptable from statement
      group by useraccount
sql sql-server sqlperformance
2个回答
1
投票

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

0
投票

也许是在插入用户时根据date(desc)对表中的用户进行排序,然后从表中选择日期并进行迭代。将第一个日期存储为一个值,如果下降的日期值与该第一个值不匹配,则退出。那就是我会做的,但不确定。如果您以对日期进行排序的方式设置了表格,则会使其他内容混乱。

© www.soinside.com 2019 - 2024. All rights reserved.