une_xxx表pfdate是來自fdate的虛拟列,表分區列是pfdate,用虛拟列做分區,寫sql時 where後面的條件要用pfdate,執行計劃才能正确采用分區過濾。
下面是不好的寫法,會全分區掃描
下面是正确的用法,單分區掃描,plsql消耗估計有誤差可以忽略
PARTITION LIST SINGLE 實際告訴你的就是 走了單個分區的掃描,而TABLE ACCESS FULL 告訴你的是,這個分區用了全掃描的方式。
測試:
select * from une_cbill t where t.pfdate>=to_Date('2018-12-01','yyyy-mm-dd') and t.pfdate<=to_Date('2018-12-02','yyyy-mm-dd');
select * from une_cbill t where t.fdate>='2018-12-01' and t.fdate<='2018-12-02';
分區 執行計劃
range分區 執行計劃中出現的:
分區表,按 n1 ,n2 分區
partition range single:訪問單個分區
partition range iterator:訪問多個分區
partition range inlist: 分區鍵中用了in 例如: where n1 in(X1,X2) and n2=X3
partition range all: 所有的分區
partition range empty: 條件在分區中不存在 (或者說是找不到數據)
partition range or: 分區鍵中用了or 例如 where n1=X1 or n2=X2
partition range subquery:
partition range join-filter:
partition range multi-column:
hash分區可用的操作:
partition hash single:
partition hash iterator:
partition hash inlist
partition hash all
partition hash subquery
partition hash join-filter
比range少了partition range or和partition range multi-column
list分區 :
partition list single
partition list iterator
partition list inlist
partition list all
partition list empty
partition list or
partition list subquery
partition list join-filter
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!