SQLite更新查询优化

时间:2016-07-12 16:41:40

标签: sql sqlite

所以我有以下结构的表:

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;

enter image description here

1 个答案:

答案 0 :(得分:1)

在数据列上有600个索引会很愚蠢。 (但不一定比600列更傻。)

所有查询都可以通过timeStamp列上的索引来加速。