chr*_*ero 6 language-agnostic rdbms sql-server-ce
在数据库中存储大量数据的最佳方法是什么?我需要存储带有时间戳的各种环境传感器的值.我已经用SQLCE完成了一些基准测试,它适用于几十万行,但如果它达到数百万,则选择将变得非常慢.我的实际表格:
Datapoint:[DatastreamID:int, Timestamp:datetime, Value:float]
Datastream: [ID:int{unique index}, Uint:nvarchar, Tag:nvarchar]
Run Code Online (Sandbox Code Playgroud)
如果我查询特定Datastream的数据点和日期范围,则需要很长时间.特别是如果我在嵌入式WindowsCE设备上运行它.这是主要问题.在我的开发机器上,查询占用了〜1sek,但在CE设备上耗时约为5分钟
每5分钟我记录20个传感器,每小时12个*24小时*365天= 105,120*20个传感器=每年2,102,400(行)
但它可能是更多的传感器!
我考虑过某种web服务后端,但设备可能并不总是连接到互联网/服务器.
数据必须能够在设备上显示.
我怎样才能加快速度呢?选择其他表格布局,使用其他数据库(sqlite)?目前我使用.netcf20和SQLCE3.5
一些建议?
我确信任何关系数据库都会满足您的需求。SQL Server、Oracle 等。重要的是创建良好的索引,以便查询高效。如果你必须进行表扫描只是为了找到一条记录,那么无论你使用哪个数据库都会很慢。
如果您总是发现自己在查询特定的 DataStreamID 和时间戳值,请为其创建索引。这样它将进行索引查找而不是扫描。