SQL - 多个表与一个大表

时间:2016-06-16 20:57:42

标签: sql database time-series

我想将多个SQLite文件移至PostgreSQL

这些文件中包含的数据是每月 time-series(单个* .sqlite文件中的一个月)。每个都有大约300,000行。这些文件中有20多个。

我的困境是如何在新数据库中组织数据:

a)将其保存在多个表
b)将其与一个巨大的表合并,并使用描述时间段的新列(例如04.2016,05.2016,...)

数据库仅用于从中提取数据(除了为新月添加数据外)。

我担心的是select来自多个表(join)的数据效果不佳,查询会变得非常复杂。

我应该选择哪种结构 - 一张大桌子还是多张小桌子?

3 个答案:

答案 0 :(得分:5)

认为我肯定会选择一张桌子 - 只要确保使用合理的索引。

答案 1 :(得分:3)

如果你有空间和资源1表,因为其他用户已经适当地指出数据库可以处理数百万行没有问题.....很好取决于它们中的数据。行大小可以产生很大的不同......例如存储VARCHAR(MAX), VARBINARY(MAX)和每行几个......

毫无疑问编写查询,ETL(提取转换加载)在单个表上显着更容易!从档案的角度来看,维护这一点也更容易。

但是,如果您从未访问过数据,并且您需要在主表中执行某种类型的存档,那么。

维护多个表有一些与BI有关的原因,但这听起来不是你的问题。

没有完美的答案,取决于你的情况。

答案 2 :(得分:2)

PostgreSQL可以轻松处理表中数百万行。

选择b)但是..

  

使用新列描述时间段(例如04.2016,05 / 2016,...)

请不要。查询不同时期将成为一种痛苦,一种不必要的痛苦。只需将日期放在一列中,在列上放置一个索引,您可以在其上执行快速查询。

  

我担心的是,从多个表(连接)中选择数据的效果不会很好,查询会变得非常复杂。

您是编写还是数据库执行复杂?一个例子对我们来说很好,可以得到你实际需求的图像。