加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 23:40:38 所属栏目:百科 来源:网络整理
导读:我正在建立一个简单的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
我正在建立一个简单的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)上执行查询.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读