SQLite Row_Num / ID

时间:2015-07-13 16:50:08

标签: database sqlite

我有一个SQLite数据库,我试图使用来自的数据,基本上有多个传感器写入数据库。我需要将一行连接到前一行来计算该时间段的值差异。但唯一的问题是数据库中的ROWID字段不能再用于连接了,因为有更多的传感器开始写入数据库。

在SQL Server中,使用Row_Number和按传感器分区很容易。我找到了这个主题:How to use ROW_NUMBER in sqlite并实施了建议:

select id, value , 
       (select count(*) from data b where a.id >= b.id and b.value='yes') as cnt 
from data a where  a.value='yes';

它有效,但速度很慢。我有什么简单的遗失吗?我可能尝试加入时差,创建一个视图。只是在智慧结束!谢谢你的任何想法!

以下是示例数据:

ROWID - SensorID - Time -     Value
1        2         1-1-2015     245
2        3         1-1-2015     4456
3        1         1-1-2015     52
4        2         2-1-2015     325
5        1         2-1-2015     76
6        3         2-1-2015     5154

我只需要将第6行连接到第2行,将第3行连接到第5行,依此类推,基于sensorID。

1 个答案:

答案 0 :(得分:0)

可以用index with the correct structure加速子查询。 在这种情况下,具有相等比较的列必须首先出现,而具有不等等的列必须先出现,第二个:

CREATE INDEX xxx ON MyTable(SensorID, Time);