【问题标题】:SQL - multiple tables vs one big tableSQL - 多张表与一张大表
【发布时间】:2016-10-18 13:30:45
【问题描述】:

我想将多个SQLite 文件移动到PostgreSQL。

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

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

a) 将其保存在多个表中
或
b) 将其合并到 一个巨大的表格,其中包含描述时间段的新列(例如 04.2016、05.2016、...)

数据库将仅用于从中提取数据(添加新月份的数据除外)。

我担心selecting 来自多个表 (join) 的数据不会很好地执行,并且查询会变得相当复杂。

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

【问题讨论】:

  • 一张桌子,绝对。将月份添加为列。
  • 数百万条记录对于数据库来说是没有问题的。定义适当的索引
  • 简单的规则是更多的表。但只是为了避免重复信息。
  • 根据你的使用方式,我更喜欢一张更大的桌子
  • 来自 SO 指南:并非所有问题都适合我们的格式。避免主要基于意见的问题,或者可能引发讨论而不是答案的问题。

标签: sql database time-series


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    PostgreSQL 能够轻松处理表中的数百万行。

    选择选项 b) 但是..

    带有描述时间段的新列(例如 04.2016、05/2016、...)

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

    我担心从多个表中选择数据(连接)不会很好,查询会变得相当复杂。

    编写或执行数据库复杂吗?一个例子会很好地帮助我们了解您的实际需求。

    【讨论】:

      【解决方案3】:

      如果您有空间和资源 1 表,正如其他用户适当指出的那样,数据库可以处理数百万行没问题.....这取决于其中的数据。行大小可以有很大的不同......例如存储VARCHAR(MAX), VARBINARY(MAX)和每行几个......

      毫无疑问,编写查询,ETL(提取转换负载)在单个表上要容易得多!从档案的角度来看,维护也更容易。

      但是,如果您从不访问数据并且您需要主表中的性能,那么某种存档可能会从那时起。

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

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

      【讨论】:

        猜你喜欢
        • 2013-03-05
        • 2016-09-26
        • 1970-01-01
        • 2018-01-11
        • 1970-01-01
        • 2012-12-15
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        相关资源
        最近更新 更多