【问题标题】:SSIS - Delete and Insert All Rows or Update and InsertSSIS - 删除并插入所有行或更新并插入
【发布时间】:2013-10-27 21:31:41
【问题描述】:

我正在尝试找出最好的方法。

查看实时数据,我想将行插入到我的 DW 表中。不知道什么会更有效。

  • 从目标表中删除所有行并插入整个视图。
  • 仅更新或插入新行。

删除行并插入整个视图需要 4 分钟。尝试查看更新和仅插入新的是否会使其更快。

现在我的实时数据库中有 350k 行,并且每周增加 2000 行。视图/表有 90 列,我不知道如何在 SSIS 中进行操作。

  • 我应该在视图和目标表之间进行连接吗?
  • 我应该使用查找并插入新行吗? (这在以下情况下是否有效? 需要更新吗?)

我在网上查看了几个示例,但不确定是否需要对所有列进行连接以检查更新的行。

【问题讨论】:

    标签: sql sql-server ssis data-warehouse


    【解决方案1】:

    需要考虑的一些事项 - 1. 历史需要维护吗?如果是,则不能截断并重新加载。

    1. 增长率:2000(行/周)* 52(周/年)= 104,000(行/年) 因此,在 3 年内,它将(大约)翻一番。它确实 - 不 - 意味着它将开始需要 8 分钟。可能需要5-6分钟。使用插入/更新技术,即使每次运行节省 2 分钟,这很重要吗?如果不是,那为什么要在流程中引入复杂性。

    2. 如果您需要对这两种方法进行定量比较,则需要编写代码并进行比较 - 我不知道有什么捷径可走。

    3. 如果您决定进行插入/更新,我建议您将所有 90 列的哈希值保留在新列中。在进行合并时,比较哈希,如果不同,更新所有 90 列。九十列是单独比较的方式。

    如果在使用哈希比较进行插入/更新方面需要进一步帮助,请返回。

    【讨论】:

    • 这就是我的想法。更好地删除和插入整个视图。只是想在这里确认一下大致的想法。
    • 如果我想每周追加整个表格,你建议做什么。所以每周将整个视图插入到同一张表中。最好的方法是什么?
    • 您的提议的用例是什么?例如,如果没有任何行发生更改,则最终会存储重复的记录。这是你真正想要的吗?除非有一个强大的用例,否则我会远离这种方法。如果您描述了您的目的,我们可以提供解决方案,而无需存储重复项。一个简单而标准的方法是拥有这三个字段:1。 DateCreated 2. DateUpdated 3. IsCurrent(是的,这有点多余,但很有帮助)
    • 我们想保留历史。我想检查去年第 30 周的销售情况。如果我保持更新行,客户可以取消预订,计算将不正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多