在進行基于代價的查詢轉換時,轉換器先确認查詢是否滿足轉換條件。一旦滿足,就會對各種可行的轉換方式進行枚舉,并對它們進行代價估算,找到代價最低的方式。由此可見,相對于啟發式查詢轉換,基于代價的查詢轉換是一個相當消耗資源(cpu和記憶體)的過程。
提示:oracle中有一個優化器參數_optimizer_cost_based_transformation,用它來控制是否進行基于代價的查詢轉換,以及如何進行基于代價的查詢轉換,進而限制其對資源的消耗。
查詢轉換器對含有distinct、group by的視圖進行的合并稱為複雜視圖合并(complex view merging,cvm)。
提示:要進行複雜視圖合并,需要確定視圖合并(參數_complex_view_merging控制)功能和複雜視圖合并功能(由優化器參數_complex_view_merging控制,預設為true)都打開。
上例中,with子查詢的結果被寫入了臨時表sys_temp_0fd9d6601_f201f06c中,主查詢直接擷取其資料。