EXPLAIN 構文を使用して、SQL ステートメントの実行プランを表示できます。たとえば、ステートメントを最適化する場合に、クエリステートメントの実行でインデックスが効率的に使用されているかどうかを確認するために、この構文を使用できます。
適用可能なエンジンとバージョン
EXPLAIN 構文は、LindormTable と LindormTSDB に適用できます。
LindormTable 2.6.3 以降のバージョンでは、さまざまな深さの実行プランがサポートされています。
構文
explain_statement ::= EXPLAIN [ PLAN ] [ explain_depth_expression ]
[ FOR ] select_statement;
explain_depth_expression ::= { WITH TYPE | WITHOUT IMPLEMENTATION }パラメーター
プランの深さ (explain_depth_expression)
重要
Lindorm SQL のバージョンは 2.6.4 以降です。 Lindorm SQL バージョンの表示方法の詳細については、「SQL バージョン」をご参照ください。
EXPLAIN 構文によって返される実行プランには、さまざまな深さがあります。次の表に、3 つの深さとステートメントでそれらを指定する方法を示します。
深さ | 深さの式 | 説明 |
物理プラン | N/A | オプティマイザーによって最適化およびフィルタリングされた物理プラン。 |
論理プラン | WITHOUT IMPLEMENTATION | 最適化されていない論理プラン。 |
型プラン | WITH TYPE | クエリの結果セットの各列の型のみを含むプラン。 |
SELECT ステートメント (select_statement)
構文の select_statement パラメーターは、実行プランを表示するクエリステートメントです。
例
次の例では、次のステートメントを実行してテストテーブルを作成します。
CREATE TABLE test (
p1 VARCHAR(255) NOT NULL,
c1 VARCHAR(255),
PRIMARY KEY (p1)
);次のステートメントを実行して、テストテーブルの一部の列にデータを書き込みます。
INSERT INTO test (p1, c1) VALUES
('3abc9378', '10'),
('3def9378', NULL),
('3ghi1234', '15'),
('3jkl5678', NULL),
('3mno9378', '20'),
('3pqr0000', '25'),
('3stu9378', '30'),
('3vwx0000', NULL),
('3yz_9378', '35'),
('3_1239378', '40');次の例は、同じクエリステートメントに対して異なる深さの実行プランを表示する方法を示しています。
物理プランの表示
EXPLAIN SELECT POSITION('9378' IN p1) AS lp, COUNT(c1) FROM (SELECT * FROM test WHERE p1 like '3_%') GROUP BY lp ORDER BY lp;論理プランの表示
EXPLAIN WITHOUT IMPLEMENTATION FOR SELECT POSITION('9378' IN p1) AS lp, COUNT(c1) FROM (SELECT * FROM test WHERE p1 like '3_%') GROUP BY lp ORDER BY lp;型プランの表示
EXPLAIN WITH TYPE FOR SELECT POSITION('9378' IN p1) AS lp, COUNT(c1) FROM (SELECT * FROM test WHERE p1 like '3_%') GROUP BY lp ORDER BY lp;