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

标签 language-agnostic rdbms sql-server-ce

在数据库中存储大量数据的最佳方法是什么?
我需要用时间戳存储各种环境传感器的值。
我已经用 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/

相关文章:

java - 没有泛型的愚蠢证明迭代的API设计

hadoop - 如何从 “Big Data”转到网页?

python - Python 项目的低内存和最快查询数据库

c# - 从 SQL 文件构建数据库

architecture - 什么是自以为是的软件?

algorithm - 当平方和为 N 时,如何找到四个变量的所有可能值?

c# - 确定表是否存在于 SQL Server CE 中?

wpf - 提供程序 : System. Data.SqlServerCe.3.5 未安装

记录最佳实践 - 在目标方法的开头记录方法调用或记录?

database-design - 数据仓库 RedShift 与其他 RDBM