我正在建立一个简单的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)
Run Code Online (Sandbox Code Playgroud)
该应用程序将从大约30个不同的传感器每月捕获大约100,000个传感器读数,并且我希望尽可能长时间地将所有传感器读数保留在DB中.
大多数查询都在表单中
SELECT * FROM sensor_readings WHERE sensor_id = x AND time > y AND time < z
Run Code Online (Sandbox Code Playgroud)
此查询通常会返回大约100-1000个结果.
所以问题是,在上述查询变得太耗时之前,sensor_readings表有多大(在标准PC上超过几秒钟).
我知道一个修复可能是为每个传感器创建一个单独的sensor_readings表,但如果没有必要,我想避免这种情况.有没有其他方法来优化此数据库架构?
您是否正确设置了索引?除此之外,阅读http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html,唯一的答案是“你必须自己测量”——特别是因为这在很大程度上取决于硬件以及是否您使用的是内存数据库还是磁盘数据库,以及是否将插入包装在事务中。
话虽这么说,在几万行之后我遇到了明显的延迟,但这绝对是没有优化的 - 通过阅读一点,我得到的印象是有人拥有数百行具有正确的索引等. 没有任何问题。
归档时间: |
|
查看次数: |
3890 次 |
最近记录: |