我有一个表,其中包含以下各列:
id (int)
col1 (int)
col2 (varchar)
date1 (date)
col3 (int)
cumulative_col3 (int)
约75万行。
我想用相同的col1, col2
和之前的date1
的col3
的总和来更新cumulative_col3
。
我有关于(date1)
、(date1, col1, col2)
和(col1, col2)
的索引。
我尝试了以下查询,但需要很长时间才能完成。
update table_name
set cumulative_col3 = (select sum(s.col3)
from table_name s
where s.date1 <= table_name.date1
and s.col1 = table_name.col1
and s.col2 = table_name.col2);
我可以做些什么来提高此查询的性能?
2条答案
按热度按时间z9ju0rcb1#
您可以尝试将以下索引添加到表中:
如果使用此索引,应该可以更快地计算相关的SUM子查询。
ycl3bljg2#
您可以尝试在派生表中计算运行总和:
这里假设
id
是表的主键。