如何在数据库中有效地存储大量行

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

一些建议?

Dis*_*ile 2

我确信任何关系数据库都会满足您的需求。SQL Server、Oracle 等。重要的是创建良好的索引,以便查询高效。如果你必须进行表扫描只是为了找到一条记录,那么无论你使用哪个数据库都会很慢。

如果您总是发现自己在查询特定的 DataStreamID 和时间戳值,请为其创建索引。这样它将进行索引查找而不是扫描。