DISPLAY関数は、履歴のEXPLAIN計画を照会し、フォーマットするために使用されます。
構文
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 フィルター条件であり、特定の演算子またはプランをフィルタリングするために使用されます。 |
例
MySQLテナントはFunction Table機能を持たないため、SELECT ステートメント内で直接 DISPLAY 関数を使用して計画情報を出力できます。
-- データベースに接続し、テーブルを作成
CREATE TABLE t1 (c1 INT);
CREATE TABLE plan_table (
statement_id VARCHAR(30),
plan_id INT,
gmt_create TIMESTAMP,
remarks VARCHAR(4000),
operator VARCHAR(255),
options VARCHAR(255),
object_node VARCHAR(40),
object_owner VARCHAR(128),
object_name VARCHAR(128),
object_alias VARCHAR(261),
object_instance INT,
object_type VARCHAR(30),
optimizer VARCHAR(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 VARCHAR(4000),
partition_start VARCHAR(4000),
partition_stop VARCHAR(4000),
partition_id INT,
other VARCHAR(4000),
distribution VARCHAR(64),
cpu_cost INT,
io_cost INT,
temp_space INT,
access_predicates VARCHAR(4000),
filter_predicates VARCHAR(4000),
startup_predicates VARCHAR(4000),
projection VARCHAR(4000),
special_predicates VARCHAR(4000),
time INT,
qblock_name VARCHAR(128),
other_xml VARCHAR(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 dbms_xplan.display() FROM dual;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dbms_xplan.display() |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ===============================================
|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
|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set