我有一個表(比如T1),它在列c1,c2和c3上定義了一個PI。強制對teradata表進行PI掃描
在一個查詢中,需要對c1進行過濾,並且對於給定的未知原因,我不能在列c1上創建二級索引。
我試着寫一個這樣的查詢 -
select *
from T1
where C1 = <some Value>
and c2 = c2
and c3 = c3
因爲對於C2和C3條件是同義反復,結果集將不會受到影響。但是,我「期待」欺騙Teradata爲此查詢調用PI,但這並未發生。
有什麼解釋?
您的統計數據是否最新?另外,當你說你試圖「欺騙」Teradata時,Teradata中的主索引不像SQL Server或Oracle中的索引。你能爲我澄清這一點嗎? – Nick 2015-02-11 17:42:12
嗯,我的意思是,當我使用「傻瓜」這個詞時,並不尊重。唯一的一點是,該索引是一個包含3列的複合索引,我的過濾器只需要一個索引。我也嘗試使用c2 <>'junk value',並且c2不是null類型的條件,它們都不會調用PI,只有當我在提供具有相等條件的文字時調用PI時(c2 =) ,那是什麼促使我使用c2 = c2 anology .. 想知道在這種情況下是否有辦法調用PI? –
Gyan
2015-02-11 18:01:26
你可以發佈解釋計劃嗎? – Nick 2015-02-11 18:56:49