我有一个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。
答案 0 :(得分:0)
可以用index with the correct structure加速子查询。 在这种情况下,具有相等比较的列必须首先出现,而具有不等等的列必须先出现,第二个:
CREATE INDEX xxx ON MyTable(SensorID, Time);