【TUNE_ORACLE】Oracle Hint之常用Hint功能概述(三)

Attack_on_Jager發表於2021-02-13

說明 

1.整理了一些本人平時SQL 調優中常用到的一些Hint,方便大家參考

2.Hint相關文章地址:

Oracle Hint之概念與用法: http://blog.itpub.net/69992972/viewspace-2756965/

Oracle Hint之常用Hint功能概述(一): http://blog.itpub.net/69992972/viewspace-2757087/

Oracle Hint之常用Hint功能概述(二): http://blog.itpub.net/69992972/viewspace-2757182/

Oracle Hint之常用Hint功能概述(三): http://blog.itpub.net/69992972/viewspace-2757238/

Oracle Hint之常用Hint功能概述(四): http://blog.itpub.net/69992972/viewspace-2757242/

Oracle Hint之常用Hint功能概述(五): http://blog.itpub.net/69992972/viewspace-2757273/


訪問路徑Hint

Hint

功能概述

舉例

/*+ rowid(tab) */

該hint讓最佳化器對指定的表以rowid方式訪問


/*+ full(tab) */

該hint讓最佳化器對指定的表進行全表掃描

SELECT /*+ FULL(e) */ employee_id,   last_name FROM emp e WHERE last_name = ‘SMITH’;  --即使“last_name”有索引,也會進行全表掃描

/*+ hash(tab) */

該hint讓指示最佳化器使用雜湊掃描來訪問指定的表。此hint僅適用於hash cluster中的表


/*+ cluster */

該hint讓最佳化器使用簇(cluster)掃描來訪問指定的表。該hint僅適用於索引簇中的表



最佳化器Hint

Hint

功能概述

舉例

/*+ all_rows */

該hint讓最佳化器啟用CBO來最佳化語句塊,以達到最佳吞吐量(即最小的總資源消耗)為目標。從Oracle 10g開始的預設最佳化器模式( 實際工作中預設採用這種方式就行


/*+ rule */

該hint讓最佳化器採用RBO模式,所以該RBO模式僅限於和DRIVING_SITE HINT一起使用,否則和其他hint一起使用就會導致其他hint失效


/*+ first_rows(n)   */

該hint讓最佳化器去最佳化單個SQL語句以實現快速響應,即選擇最有效地返回前n行的執行計劃。對於整數n,即為指定要返回的行數。


/*+ choose */

該hint讓最佳化器自動選擇是使用CBO還是RBO模式,依據就是資料字典有要訪問的表的統計資訊,就會採用CBO,反之就採用RBO


/*+ opt_param(‘xxx’   ‘xxx’) */

使用該hint可以僅在當前使用SQL查詢時設定初始化系統引數,比session級的系統引數細粒度要更高。該提示僅對以下引數有效:APPROX_FOR_AGGREGATION,APPROX_FOR_COUNT_DISTINCT,APPROX_FOR_PERCENTILE,OPTIMIZER_DYNAMIC_SAMPLING,OPTIMIZER_INDEX_CACHING,OPTIMIZER_INDEX_COST_ADJ,OPTIMIZER_STAR_FORMATION_VIEW 和STAR_TRANSFORMATION_ENABLED。

SELECT /*+   OPT_PARAM('star_transformation_enabled' 'true') */ * FROM tab;



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2757238/,如需轉載,請註明出處,否則將追究法律責任。

相關文章