所以我有以下结构的表:
TimeStamp,
var_1,
var_2,
var_3,
var_4,
var_5,...
这包含大约600列名为var _ ##的列,用户解析机器存储的一些数据,我必须将该表中的所有空值更新为最后一个有效值。目前我使用以下查询:
update tableName
set var_## =
(select b.var_## from tableName as
where b.timeStamp <= tableName.timeStamp and b.var_## is not null
order by timeStamp desc limit 1)
where tableName.var_## is null;
现在的问题是为所有列运行此查询所需的驯服,是否有任何方法可以优化此查询?
更新:这是对一列执行查询时的输出查询计划:
update wme_test2
set var_6 =
(select b.var_6 from wme_test2 as b
where b.timeStamp <= wme_test2.timeStamp and b.var_6 is not null
order by timeStamp desc limit 1)
where wme_test2.var_6 is null;
答案 0 :(得分:1)
在数据列上有600个索引会很愚蠢。 (但不一定比600列更傻。)
所有查询都可以通过timeStamp
列上的索引来加速。