在查询变为时间消耗之前,SQLite表可以保留多少行

前端之家收集整理的这篇文章主要介绍了在查询变为时间消耗之前,SQLite表可以保留多少行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立一个简单的sqlite数据库来保存传感器读数.表格看起来像这样:
sensors  
 - id (pk) 
 - name  
 - description
 - units  

sensor_readings  
 - id (pk)  
 - sensor_id (fk to sensors)  
 - value (actual sensor value stored here)
 - time (date/time the sensor sample was taken)

该应用程序将从大约30个不同的传感器每月捕获大约100,000个传感器读数,并且我希望尽可能长时间地将所有传感器读数保留在DB中.

大多数查询都在表单中

SELECT * FROM sensor_readings WHERE sensor_id = x AND time > y AND time < z

查询通常会返回大约100-1000个结果.

所以问题是,在上述查询变得太耗时之前,sensor_readings表有多大(在标准PC上超过几秒钟).

我知道一个修复可能是为每个传感器创建一个单独的sensor_readings表,但如果没有必要,我想避免这种情况.有没有其他方法来优化此数据库架构?

如果您要在查询中使用时间,那么为它添加索引是值得的.这将是我根据您的信息建议的唯一优化.

每月100,000次插入相当于每分钟大约2.3次,因此另一个索引不会太繁重,它会加快您的查询速度.我假设所有30个传感器都有100,000次插入,而不是每个传感器100,000次,但即使我错了,每分钟70次插入仍然可以.

如果性能确实成为问题,您可以选择将旧数据卸载到历史表(例如,sensor_readings_old),并仅在非历史表(sensor_readings)上执行查询.

然后,您至少可以获得所有数据,而不会影响正常查询.如果你真的想要获取较旧的数据,你可以这样做,但你会发现对它的查询可能需要一段时间.

猜你在找的Sqlite相关文章