可以選擇多種優(yōu)化模式作為PolarDB PostgreSQL版(兼容Oracle)數(shù)據(jù)庫集群的默認(rèn)設(shè)置。通過使用ALTER SESSION命令以及優(yōu)化器提示中單獨(dú)的DELETE、SELECT和UPDATE命令,還可以在每個(gè)會(huì)話的基礎(chǔ)上更改此設(shè)置。控制這些默認(rèn)模式的配置參數(shù)名為OPTIMIZER_MODE。
下表顯示可能的值。
提示 | 說明 |
---|---|
ALL_ROWS | 優(yōu)化結(jié)果集所有行的檢索。 |
CHOOSE | 不基于要從結(jié)果集中檢索的假定行數(shù)進(jìn)行默認(rèn)優(yōu)化。這是默認(rèn)值。 |
FIRST_ROWS | 優(yōu)化僅結(jié)果集第一行的檢索。 |
FIRST_ROWS_10 | 優(yōu)化結(jié)果集前10行的檢索。 |
FIRST_ROWS_100 | 優(yōu)化結(jié)果集前100行的檢索。 |
FIRST_ROWS_1000 | 優(yōu)化結(jié)果集前1000行的檢索。 |
FIRST_ROWS(n) | 優(yōu)化結(jié)果集前n行的檢索。此形式不得用作ALTER SESSION SET OPTIMIZER_MODE命令的對(duì)象。它只能在SQL命令中以提示的形式使用。 |
這些優(yōu)化模式基于以下假設(shè):提交SQL命令的客戶端只想查看結(jié)果集的前“n”行,然后將放棄結(jié)果集的其余部分。分配給查詢的資源也會(huì)如此調(diào)整。
示例
更改當(dāng)前會(huì)話以優(yōu)化結(jié)果集前10行的檢索。
ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS_10;
OPTIMIZER_MODE參數(shù)的當(dāng)前值可使用SHOW命令顯示。請(qǐng)注意,此命令是從屬于實(shí)用程序的命令。在PSQL中,SHOW命令使用如下:
SHOW OPTIMIZER_MODE;
optimizer_mode
----------------
first_rows_10
(1 row)
以下示例顯示SELECT命令中使用的優(yōu)化模式作為提示:
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)