English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite Explain(説明)

SQLite文脈の前に「EXPLAIN」キーワードまたは「EXPLAIN QUERY PLAN」フレーズを追加することができ、テーブルの詳細情報を説明します。

これらの変更は、SQLite文がクエリとして動作し、EXPLAINキーワードまたはフレーズを省略した場合の動作に関する情報を返すようにSQLite文を表現します。

  • EXPLAINおよびEXPLAIN QUERY PLANの出力は、インタラクティブな分析やトラブルシューティングにのみ使用されるべきです。

  • 出力フォーマットの詳細は、SQLiteのバージョンによって異なる場合があります。

  • アプリケーションはEXPLAINまたはEXPLAIN QUERY PLANを使用すべきではありません。なぜなら、その正確な動作は変動し、記録されるのは一部に過ぎません。

構文

EXPLAINの構文は以下の通りです:

EXPLAIN [SQLite Query]

EXPLAIN QUERY PLANの構文は以下の通りです:

EXPLAIN  QUERY PLAN [SQLite Query]

オンラインサンプル

以下のレコードを持つCOMPANYテーブルを考慮します-

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           ポール        32          カリフォルニア  20000.0
2           アレン       25          テキサス       15000.0
3           テディ       23          ノルウェイ      20000.0
4           マーク        25          リッチ-モンド   65000.0
5           デイビッド       27          テキサス       85000.0
6           キム         22          サウス-ホール  45000.0
7           ジェームズ       24          ヒューストン     10000.0

今、SELECT文を使って以下のサブクエリをチェックしましょう-

sqlite> EXPLAIN SELECT * FROM COMPANY WHERE Salary >= 20000;

これは以下の結果を生成します。

addr        opcode      p1          p2          p3
----------  ----------  ----------  ----------  ----------
0           Goto        0           19
1           Integer     0           0
2           OpenRead    0           8
3           SetNumColu  0           5
4           Rewind      0           17
5           Column      0           4
6           RealAffini  0           0
7           Integer     20000       0
8           Lt          357         16          collseq(BI
9           Rowid       0           0
10          Column      0           1
11          Column      0           2
12          Column      0           3
13          Column      0           4
14          RealAffini  0           0
15          Callback    5           0
16          Next        0           5
17          Close       0           0
18          Halt        0           0
19          Transactio  0           0
20          VerifyCook  0           38
21          Goto        0           1
22          Noop        0           0

今、SELECT 文で Explain Query Plan の使用を確認しましょう:

SQLite> EXPLAIN QUERY PLAN SELECT * FROM COMPANY WHERE Salary >= 20000;
order       from        detail
----------  ----------  -------------
0           0           TABLE COMPANY