DISPLAY関数は、履歴のEXPLAIN計画を照会してフォーマットするために使用されます。
適用対象
Community EditionはV4.2.5バージョンからこの機能をサポートしています。
構文
TYPE DBMS_XPLAN_TYPE_TABLE IS TABLE OF VARCHAR2(4000);
DBMS_XPLAN.DISPLAY(format VARCHAR2 DEFAULT 'TYPICAL',
statement_id VARCHAR2 DEFAULT null,
table_name VARCHAR2 DEFAULT 'PLAN_TABLE',
filter_preds VARCHAR2 DEFAULT null)
RETURN DBMS_XPLAN_TYPE_TABLE;
パラメータの説明
| パラメータ | 説明 |
|---|---|
| format | プランの形式情報を指定します。オプションパラメータは以下のとおりです。
|
| statement_id | EXPLAIN クエリのマーカー情報であり、コマンド EXPLAIN SET STATEMENT_ID='XXX' を使用してクエリのマーカー情報を設定できます。 |
| table_name | EXPLAIN プランを保存するターゲットテーブルで、現在のデフォルト値は PLAN_TABLE です。 |
| filter_preds | 追加の PLAN_TABLE フィルター条件であり、特定の演算子またはプランをフィルタリングするために使用されます。 |
例
Oracleテナントは、Function Table機能と組み合わせて使用する必要があります。
-- データベースに接続し、テーブルを作成
CREATE TABLE t1 (
c1 INT
);
CREATE TABLE plan_table (
statement_id VARCHAR2(30),
plan_id INT,
gmt_create TIMESTAMP,
remarks VARCHAR2(4000),
operator VARCHAR2(255),
options VARCHAR2(255),
object_node VARCHAR2(40),
object_owner VARCHAR2(128),
object_name VARCHAR2(128),
object_alias VARCHAR2(261),
object_instance INT,
object_type VARCHAR2(30),
optimizer VARCHAR2(4000),
search_columns INT,
id INT,
parent_id INT,
depth INT,
position INT,
is_last_child INT,
cost INT,
cardinality INT,
bytes INT,
rowset INT,
other_tag VARCHAR2(4000),
partition_start VARCHAR2(4000),
partition_stop VARCHAR2(4000),
partition_id INT,
other VARCHAR2(4000),
distribution VARCHAR2(64),
cpu_cost INT,
io_cost INT,
temp_space INT,
access_predicates VARCHAR2(4000),
filter_predicates VARCHAR2(4000),
startup_predicates VARCHAR2(4000),
projection VARCHAR2(4000),
special_predicates VARCHAR2(4000),
time INT,
qblock_name VARCHAR2(128),
other_xml VARCHAR2(4000)
);
-- EXPLAINを使用してクエリ計画を確認
EXPLAIN SELECT * FROM t1;
+-------------------------------------------------------------------+
| Query Plan |
+-------------------------------------------------------------------+
| =============================================== |
| |ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)| |
| ----------------------------------------------- |
| |0 |TABLE FULL SCAN|T1 |1 |4 | |
| =============================================== |
| Outputs & filters: |
| ------------------------------------- |
| 0 - output([T1.C1]), filter(nil), rowset=16 |
| access([T1.C1]), partitions(p0) |
| is_index_back=false, is_global_index=false, |
| range_key([T1.__pk_increment]), range(MIN ; MAX)always true |
+-------------------------------------------------------------------+
11 rows in set
-- DBMS_XPLANパッケージを使用して履歴計画を確認
SELECT * FROM table(dbms_xplan.display);
+-------------------------------------------------------------------+
| COLUMN_VALUE |
+-------------------------------------------------------------------+
| ========================================== |
| |ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)| |
| ------------------------------------------ |
| |0 |TABLE SCAN|T1 |1 |2 | |
| ========================================== |
| Outputs & filters: |
| ------------------------------------- |
| 0 - output([T1.C1]), filter(nil), rowset=16 |
| access([T1.C1]), partitions(p0) |
| is_index_back=false, is_global_index=false, |
| range_key([T1.__pk_increment]), range(MIN ; MAX)always true |
+-------------------------------------------------------------------+