Oracle SQLのHint句のメモ

          ┌───────┐
DELETE ─┬─/*+ ─┴┬─ Hint ─┬┴─ */─
SELECT ─┤     └─ Text ─┘
UPDATE ─┘

Hint(ヒント)の種類
* ALL_ROWS(コストベース)
 最高のスループットを目標として、文ブロックを最適化。
 SELECT /*+ ALL_ROWS */ EMPNO FROM EMP WHERE EMPNO = 123;

* FIRST_ROWS(コストベース)
 最高の応答時間目標として、文ブロックを最適化。
 SELECT /*+ FIRST_ROWS */ EMPNO FROM EMP WHERE EMPNO = 123;

* CHOOSE(コスト/ルールベース)
 テーブルの統計に基づいて、オプティマイザの種類を選択。
 最高のスループットを目標として最適化。
 SELECT /*+ CHOOSE */ EMPNO FROM EMP WHERE EMPNO = 123;

* RULE(ルールベース)
 ルールベースのオプティマイザを選択。他のヒントは無視される。
 SELECT /*+ RULE */ EMPNO FROM EMP WHERE EMPNO = 123;

Text(アクセス方法)の種類
* FULL(table)
 指定されたテーブルに対して、全表走査を選択。
 SELECT /*+ FULL(EMP) */ EMPNO FROM EMP WHERE EMPNO = 123;

* ROWID(table)
 指定されたテーブルに対して、ROWIDによる表走査を選択。
 SELECT /*+ ROWID(EMP) */ EMPNO FROM EMP WHERE EMPNO = 123;

* CLUSTER(table)
 指定されたテーブルをアクセスするために、クラスタ走査を選択。
 SELECT /*+ CLUSTER(EMP) */ EMPNO FROM EMP WHERE EMPNO = 123;

* HASH(table)
 指定されたテーブルをアクセスするために、ハッシュ走査を選択。
 SELECT /*+ HASH(EMP) */ EMPNO FROM EMP WHERE EMPNO = 123;

* INDEX [_ASC] or [_DESC] (table index)
 指定されたテーブルに対して、インデックス走査を選択。
 SELECT /*+ INDEX(EMP IDX_EMPNO) */ EMPNO FROM EMP WHERE EMPNO = 123;

* INDEX_FFS [_ASC] or [_DESC] (table index)
 指定されたテーブルに対して、高速全索引走査を選択。
 ※ 初期化パラメータに「fast_full_scan_enabled=true」が必要。
 SELECT /*+ INDEX_FFS(EMP IDX_EMPNO) */ EMPNO FROM EMP WHERE EMPNO = 123;
- スポンサーリンク -