Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 如何在数据库中有效地存储大量行_Language Agnostic_Rdbms_Sql Server Ce - Fatal编程技术网

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

Language agnostic 如何在数据库中有效地存储大量行,language-agnostic,rdbms,sql-server-ce,Language Agnostic,Rdbms,Sql Server Ce,在数据库中存储大量数据的最佳方式是什么? 我需要用时间戳存储各种环境传感器的值。 我已经用SQLCE做了一些基准测试,它在100000行中运行良好,但是如果它达到数百万行,选择将变得非常慢。 我的实际表格: Datapoint:[DatastreamID:int, Timestamp:datetime, Value:float] Datastream: [ID:int{unique index}, Uint:nvarchar, Tag:nvarchar] 如果我查询特定数据流和日期范围的数

在数据库中存储大量数据的最佳方式是什么? 我需要用时间戳存储各种环境传感器的值。 我已经用SQLCE做了一些基准测试,它在100000行中运行良好,但是如果它达到数百万行,选择将变得非常慢。 我的实际表格:

Datapoint:[DatastreamID:int, Timestamp:datetime, Value:float]  
Datastream: [ID:int{unique index}, Uint:nvarchar, Tag:nvarchar]
如果我查询特定数据流和日期范围的数据点,则需要时间。特别是如果我在嵌入式WindowsCE设备上运行它。这是主要问题。在我的开发机器上,查询耗时约1秒,但在CE设备上则耗时约5分钟

每5分钟我记录20个传感器,每小时12个*24小时*365天=105120*20个传感器=每年2102400(行)

但它可能是更多的传感器

我考虑过某种webservice后端,但该设备可能并不总是连接到internet/服务器

数据必须能够显示在设备本身上

我怎样才能加快速度?选择其他表布局,是否使用其他数据库(sqlite)?目前我使用.netcf20和SQLCE3.5


一些建议?

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


如果总是查询特定的DataStreamID和时间戳值,请为其创建索引。这样,它将执行索引搜索而不是扫描。

快速访问的关键是使用一个或多个索引

一个一年200万行的数据库是非常容易管理的

添加索引会在一定程度上降低插入速度,但您的数据并没有那么快进入,所以这不应该是一个问题。如果数据输入的速度更快,您可能需要更加小心,但为了成为一个关注点,必须以比现在快得多的速度输入更多的数据


您是否可以访问SQL Server,甚至MySQL?

您的设计必须具备以下功能: 表中的主键。整数PK更快

您需要分析select查询,以了解场景背后的情况。 Select必须执行搜索而不是扫描

如果100K使其变慢,则必须通过analyzer查看查询

如果你有100万排,而不是10万排,速度可能会变慢


希望这有帮助

您能改用SQL Server Express Edition吗?您可以在其上创建索引,就像在完整版本中一样。我在SQL Server中使用了超过1亿行的数据库。SQL Server Express Edition将您的数据库大小限制为10 GB,因此,只要这样做没有问题,那么免费的数据库应该适合您


您是否对用作查询键的字段编制了索引?如果没有,那将是第一步。