如果主表以指数方式变大,如何更新SQL视图

如果主表以指数方式变大,如何更新SQL视图,sql,Sql,我有一个SQL视图,其中主表呈指数增长。视图具有主表组的聚合数据(按id) 每天我们都会删除视图并创建新的视图,这样我们就可以在画面上可视化视图 现在,由于主表中的数据每天呈指数增长,因此创建每日视图成为一个问题 给我建议一个解决办法 需要关注设计部分 drop view view_1 create view view_1 as select a.*, c.lasttime from ( select id, max(time) as lasttime from master_table g

我有一个SQL视图,其中主表呈指数增长。视图具有主表组的聚合数据(按id)

每天我们都会删除视图并创建新的视图,这样我们就可以在画面上可视化视图

现在,由于主表中的数据每天呈指数增长,因此创建每日视图成为一个问题

给我建议一个解决办法

需要关注设计部分

drop view view_1
create view view_1 as

select a.*, c.lasttime
from
(
select id, 
max(time) as lasttime
from master_table
group by id
) as a
left join
(select t.id, t.lasttime, b.device 
from master_table as b
join(
select id, max(time) last_seen  from master_table group by id) as t
on b.id=t.id and b.time= t.lasttime
 ) as c
 on a.id = c.id and a.lasttime=c.lasttime
 order by lasttime desc;

预期:需要设计视图,这样我就不会每天创建整个视图了

我不知道你为什么每天都要重新创建视图。代码中没有任何更改。我想我(至少)忽略了你真正的问题是什么。因为主表有数百万条记录,每天都在扫描,以便在聚合中包含新数据。我想你误解了视图是什么。。。视图不是数据的快照。视图只是一个存储的查询。任何人查看视图时,都会运行您显示的查询。应该不需要按计划更新视图。