天天看點

《Oracle高性能SQL引擎剖析:SQL優化與調優機制詳解》一3.2 基于代價的查詢轉換

在進行基于代價的查詢轉換時,轉換器先确認查詢是否滿足轉換條件。一旦滿足,就會對各種可行的轉換方式進行枚舉,并對它們進行代價估算,找到代價最低的方式。由此可見,相對于啟發式查詢轉換,基于代價的查詢轉換是一個相當消耗資源(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中,主查詢直接擷取其資料。