在数据库中存储大量数据的最佳方法是什么?
我需要用时间戳存储各种环境传感器的值。
我已经用 SQLCE 做了一些基准测试,它可以很好地处理 100,000 行,但如果达到数百万行,选择将变得非常缓慢。
我的实际表:
Datapoint:[DatastreamID:int, Timestamp:datetime, Value:float]
Datastream: [ID:int{unique index}, Uint:nvarchar, Tag:nvarchar]
如果我查询特定数据流和日期范围的数据点,则需要很长时间。特别是如果我在嵌入式 WindowsCE 设备上运行它。这就是主要问题。在我的开发机器上查询需要~1sek,但在CE设备上需要~5min
每 5 分钟我记录 20 个传感器,每小时 12 个 * 24 小时 * 365 天 = 105,120 * 20 个传感器 = 2,102,400(行)每年
但它可能是更多的传感器!
我想过某种网络服务后端,但设备可能并不总是连接到互联网/服务器。
数据必须能够显示在设备本身上。
我怎样才能加快速度?选择其他表格布局,使用其他数据库(sqlite)?目前我使用 .netcf20 和 SQLCE3.5
一些建议?
最佳答案
我相信任何关系数据库都能满足您的需求。 SQL Server、Oracle 等。重要的是创建好的索引,以便您的查询高效。如果你必须做一个表扫描只是为了找到一条记录,不管你使用哪个数据库都会很慢。
如果您总是发现自己在查询特定的 DataStreamID 和 Timestamp 值,请为其创建索引。这样它将执行索引查找而不是扫描。
关于language-agnostic - 如何有效地在数据库中存储大量行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5184574/