【问题标题】:SSIS Data Flow task providing poor performance when using a Where ClauseSSIS 数据流任务在使用 Where 子句时性能不佳
【发布时间】:2016-11-18 18:17:45
【问题描述】:

我在 SSIS 2008 中使用数据流任务。我将源设置为 sql 命令。这对我的情况很有用。但是,我只需要在某年之后从源表中取回数据。一旦我将此过滤器添加为 where 子句,性能似乎就会停止。尽管这不是理想的解决方案,但我已将所有内容都带回来,然后删除我不需要的内容。

这是 where 子句。我尝试了不同的方法来优化查询,但数据传输速度相同:

where table.Date > dateadd(YY,-6,getdate())

谁能解释一下 where 子句的问题?

【问题讨论】:

  • 你能显示命令吗?
  • 这是 where 子句。我尝试了不同的方法来优化查询,但数据传输速度相同 - 其中 table.Date > dateadd(YY,-6,getdate())
  • 因为您每次比较记录时都在计算 dateadd 函数。您可以在 Select 语句之前将其设置在变量中并使用该变量吗?
  • 在做出此声明之前,您需要确定这一点。这两个链接说getdate() 并不是对每一行都执行,我倾向于相信它。blogs.msdn.microsoft.com/conor_cunningham_msft/2010/04/23/…dba.stackexchange.com/questions/41655/…
  • 查看这两种情况的查询计划。听起来你有一个table.Date 的索引,扫描整个表比使用它更快。统计数据是最新的吗?

标签: sql sql-server performance ssis


【解决方案1】:

将日期列上的索引添加到源表中,看看性能是否有所提高。

【讨论】:

    【解决方案2】:

    您的表是否已编入索引并且索引是否涵盖日期列?如果没有,WHERE 子句将需要“扫描”表,这可能是问题的根源。

    【讨论】:

    • 参数date是我试过的,虽然并没有显着提升整体性能。我无法索引源,因为它是第三方应用程序。
    【解决方案3】:

    我通过再次查看连接解决了这个问题。我有一个非常低效的连接,当与 where 子句结合使用时会导致性能下降。感谢您的所有回答和 cmets。

    【讨论】:

      猜你喜欢
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多