複数の最適化モードが利用可能です。 Oracle と互換性のある PolarDB データベースクラスター向けのデフォルトモードとして、最適化モードを 1 つ選択できます。 また、ALTER SESSION 文を実行するか、オプティマイザヒント内で DELETE、SELECT、または UPDATE 文を実行することにより、セッションごとに設定を変更することもできます。 デフォルトのモードを指定する設定パラメーターは、OPTIMIZER_MODE という名前です。 次の表では、このパラメーターの有効な値を示します。
ヒント | 説明 |
---|---|
ALL_ROWS | 結果セットのすべての行の取得を最適化します。 |
CHOOSE | デフォルトの結果セットから取得される想定行数に基づく最適化を実装しません。 デフォルト値です。 |
FIRST_ROWS | 結果セットの最初の行のみの取得を最適化します。 |
FIRST_ROWS_10 | 結果セットの最初の 10 行の取得を最適化します。 |
FIRST_ROWS_100 | 結果セットの最初の 100 行の取得を最適化します。 |
FIRST_ROWS_1000 | 結果セットの最初の 1,000 行の取得を最適化します。 |
FIRST_ROWS(n) | 結果セットの最初の n 行の取得を最適化します。 この形式は、ALTER SESSION SET OPTIMIZER_MODE 文のオブジェクトとしては使用できません。 SQL 文のヒントとしてのみ使用できます。 |
SQL 文を送信してこれらの最適化モードを使用する場合、結果セットの最初の n 行しか表示できず、他の行は破棄されます。 システムは、このルールに基づいてクエリにリソースを割り当てます。
例
現在のセッションを変更して、結果セットの最初の 10 行の取得を最適化します。
ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS_10;
SHOW 文を実行して、OPTIMIZER_MODE パラメーターの現在の値を表示できます。 構文は、ユーティリティに依存します。 PSQL では、SHOW 文は次のように使用されます。
SHOW OPTIMIZER_MODE;
optimizer_mode
----------------
first_rows_10
(1 row)
SHOW 文は Oracle データベースと互換性があり、次の構文がサポートされます。
SHOW PARAMETER OPTIMIZER_MODE;
NAME
--------------------------------------------------
VALUE
--------------------------------------------------
optimizer_mode
first_rows_10
次の例では、SELECT 文のヒントとして最適化モードを使用しています。
SELECT /*+ FIRST_ROWS(7) */ * FROM emp;
empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+--------+-----------+------+--------------------+---------+---------+--------
7369 | SMITH | CLERK | 7902 | 17-DEC-80 00:00:00 | 800.00 | | 20
7499 | ALLEN | SALESMAN | 7698 | 20-FEB-81 00:00:00 | 1600.00 | 300.00 | 30
7521 | WARD | SALESMAN | 7698 | 22-FEB-81 00:00:00 | 1250.00 | 500.00 | 30
7566 | JONES | MANAGER | 7839 | 02-APR-81 00:00:00 | 2975.00 | | 20
7654 | MARTIN | SALESMAN | 7698 | 28-SEP-81 00:00:00 | 1250.00 | 1400.00 | 30
7698 | BLAKE | MANAGER | 7839 | 01-MAY-81 00:00:00 | 2850.00 | | 30
7782 | CLARK | MANAGER | 7839 | 09-JUN-81 00:00:00 | 2450.00 | | 10
7788 | SCOTT | ANALYST | 7566 | 19-APR-87 00:00:00 | 3000.00 | | 20
7839 | KING | PRESIDENT | | 17-NOV-81 00:00:00 | 5000.00 | | 10
7844 | TURNER | SALESMAN | 7698 | 08-SEP-81 00:00:00 | 1500.00 | 0.00 | 30
7876 | ADAMS | CLERK | 7788 | 23-MAY-87 00:00:00 | 1100.00 | | 20
7900 | JAMES | CLERK | 7698 | 03-DEC-81 00:00:00 | 950.00 | | 30
7902 | FORD | ANALYST | 7566 | 03-DEC-81 00:00:00 | 3000.00 | | 20
7934 | MILLER | CLERK | 7782 | 23-JAN-82 00:00:00 | 1300.00 | | 10
(14 rows)