2015-11-13 22 views
1

由於IBM Cognos不支持任何類型的DDL,包括在Teradata中創建易失性表創建,我陷入了即興報告無法改進的情況。 報表查詢聚合和列表中包含大約5000個值。我知道如何使用UDF和派生表來修復inlist部分,但是我想做一些等價的Volatile表,我可以根據自己的選擇重新分配,而無需實際創建它。 所以我想告訴優化器是「Pl加入這3個表並通過這個組合鍵重新分配它們」,然後加入到查詢的其餘部分。 我想知道,如果創建一個派生表連接這些「目標表」,然後加入DT將有助於創建效果Teradata重新分配時沒有易失性表

sel A.1, A.2, Sum (C.1) , Sum (D.1) , case when A.5 in (In-list) then "string" else "string2" end , sum (...) more columns ...etc 
from 
A Join B on ____ join C on ______ Join D ____ 

過濾條件

我的做法 基於分析認爲表CDE上歪斜的線軸我想這發生1 A聯接C聯接D加入E。這將prolly複製CDE被重新分配A的PI ....然後的其餘部分加入

sel < condition as before> 
    from 
    (sel < column list> from A Join C Join D join E --with respective Join conditions) dt Join F on ___ Join G on____ 

我想那麼,什麼是表中的兩件事情

  • 序列聯接一號ACDE結合
  • 因此
  • 的申創建應具有基於尺寸 其餘部分的PI,這樣我可以確保星型連接

回答

2

如果你把一個DISTINCT或GROUP BY在派生表中,優化程序無法將派生表摺疊到派生表之外的聯接中。它將強制優化器首先在假脫機中實現派生表。派生表將根據連接條件重新分配給外部查詢。

您需要測試將GROUP BY或DISTINCT放置在派生表上的影響,因爲它消除了優化程序可能採取的某些決策,否則會導致其成本更高效。

+0

謝謝我會試試看 – user1874594