我想加载一个事实表。我加入了7个不同的表格。当我从该连接中选择计数(1)时,需要25分钟才能执行并返回988368728条记录。最重要的是,我一次又一次地使用同一组表。使用SSIS选择大量的记录
实施例:
Select set1.minVal, t2b, t2.Key1, T3.Key2... t7.g From t1, t2,...,t7
left outer join
(
Select
Min(t1a) minVal, Max(t2b) maxVal, t2.Key1, T3.Key2 From t1, t2,...,t7
group by t2.Key1, K3.Key2(Key Columns)
)set1
on t2.Key1 = set1.Key1
and t3.Key2 = set1.Key2
and t2b = maxVal
当我执行它在1小时后失败上述查询由于在足够的存储器用于TEMPDB。我需要在SSSI包中使用这个查询来加载一个事实表。我可以选择通过不同的方式编写查询来实现这一点。其中一个是我可以使用SP来分割和征服结果,我可以使用SSIS Package来分割和征服,但是,我不知道如何分解它。
我需要帮助来整理这个时间杀手。
我确定我在团队之前已经有98密尔,在团队之后减少到35密尔。我想要一种分解和征服查询的方法。无论是在存储过程还是SSIS包。 – HRK 2013-05-10 18:02:03
我的观点是你是否想要进行笛卡尔连接,或者在表格之间是否存在用于减少#或记录的关键列?另外,您只使用7个表格中的4个的值 – 2013-05-10 20:32:12
换句话说......您是怎么想出这个查询的,因为它看起来不正确 - 它创建了一个笛卡尔连接,它总是会导致一个TEMPDB如果您使用大型表格,则会出错。您需要分析您的查询并提出正确的查询。你的几乎肯定是不正确的。 – 2013-05-11 07:47:57