在查询变为时间消耗之前,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)上执行查询. 然后,您至少可以获得所有数据,而不会影响正常查询.如果你真的想要获取较旧的数据,你可以这样做,但你会发现对它的查询可能需要一段时间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |