DISPLAY_CURSOR 関数は、実行済みのクエリ計画の詳細を表示するために使用されます。
使用上の制限
V4.3.5バージョンについては、この機能はV4.3.5 BP2バージョンからサポートされます。
構文
DBMS_XPLAN.DISPLAY_CURSOR(plan_id DECIMAL DEFAULT 0, -- default value: last plan
format VARCHAR(32) DEFAULT 'TYPICAL',
svr_ip VARCHAR(64) DEFAULT null, -- default value: server connected by client
svr_port DECIMAL DEFAULT 0, -- default value: server connected by client
tenant_id DECIMAL DEFAULT 0, -- default value: current tenant
sql_handle VARCHAR(32) DEFAULT NULL,
plan_name VARCHAR(32) DEFAULT NULL
)
RETURN DBMS_XPLAN_TYPE_TABLE;
パラメータの説明
パラメータ |
説明 |
|---|---|
| plan_id | 実行計画のIDです。指定しない場合、前回実行された計画が使用されます。 |
| format | 計画形式情報を指定します。オプションは以下のとおりです:
|
| svr_ip | 計画が存在するノードのIPアドレスです。デフォルトはセッションが接続しているノードのIPアドレスです。 |
| svr_port | 計画が存在するノードのポート番号です。デフォルトはセッションが接続しているノードのポート番号です。 |
| tenant_id | 計画が属するテナントIDです。デフォルトはセッションが現在接続しているテナントです。 |
| sql_handle | 実行計画がSQL文を識別するために使用するハンドル(Handle)です。特定のSQL文の実行計画を照会する場合、複数の類似したSQLが存在する場合でも、sql_handleを使用して対象文を正確に指定できます。 |
| plan_name | 実行計画の名前です。 |
例
MySQLテナントはFunction Table機能を持たないため、SELECT ステートメント内で直接 DISPLAY_CURSOR 関数を使用して実行計画情報を出力できます。
テーブルを作成します。
obclient [test]> CREATE TABLE t1(c1 INT);クエリを実行します。
obclient [test]> SELECT * FROM t1;DBMS_XPLANパッケージを使用して履歴的な実行計画を確認します。パラメータを指定しないクエリの場合。
obclient [test]> SELECT DBMS_XPLAN.DISPLAY_CURSOR() ;クエリ結果は次のとおりです:
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | DBMS_XPLAN.DISPLAY_CURSOR() | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ================================================================================================ |ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|REAL.ROWS|REAL.TIME(us)|IO TIME(us)|CPU TIME(us)| ------------------------------------------------------------------------------------------------ |0 |TABLE FULL SCAN|t1 |1 |4 |0 |0 |0 |155 | ================================================================================================ 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 (0.173 sec)パラメータを指定するクエリの場合。
obclient [test]> SELECT DBMS_XPLAN.DISPLAY_CURSOR(67475, 'typical', '11.xxx.xxx.xxx', 32903, 1, 'AE3BAF04FD13DF0DC5B4B9C6EFA9C8CA', '3290318591324336132') FROM DUAL;クエリ結果は次のとおりです:
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | DBMS_XPLAN.DISPLAY_CURSOR() | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ================================================================================================ |ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|REAL.ROWS|REAL.TIME(us)|IO TIME(us)|CPU TIME(us)| ------------------------------------------------------------------------------------------------ |0 |DISTRIBUTED INSERT| |1 |13 |0 |0 |0 |488 | |1 |└─EXPRESSION | |1 |1 |1 |0 |0 |20 | ================================================================================================ Outputs & filters: ------------------------------------- 0 - output(nil), filter(nil) columns([{test_sqlstat: ({test_sqlstat: (test_sqlstat.a, test_sqlstat.b)})}]), column_values([column_conv(INT,PS:(11,0),NOT NULL,__values.a)], [column_conv(INT,PS:(11,0),NULL,__values.b)]) 1 - output([__values.a], [__values.b]), filter(nil) values({3, 3}) | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.173 sec)