インデックスが正しいことを確認したいSqliteデータベースがあります。MS SQL アナライザーは、クエリの実行と使用されているインデックスを分析するのに優れています。
Sqlite 用の同様のツールはありますか?
インデックスが正しいことを確認したいSqliteデータベースがあります。MS SQL アナライザーは、クエリの実行と使用されているインデックスを分析するのに優れています。
Sqlite 用の同様のツールはありますか?
outisが言ったように:
EXPLAIN QUERY PLAN SELECT * FROM FOO
私のように、インデックスにヒットしていることを確認するために単にそれを使用している場合、より読みやすい出力でのトリックはありますか(インデックス?)
きれいなグラフィカル ツールは知りませんが、検索するすべての情報はEXPLAIN
キーワードから入手できます。
次のデータベースを検討してください。
sqlite> create table users (name, email);
sqlite> create index user_names on users (name);
を前提とするクエリemail
は、インデックスを使用しません。
sqlite> explain select * from users where email='foo';
アドレス | オペコード | p1 | p2 | p3 | p4 | p5 | コメント |
---|---|---|---|---|---|---|---|
0 | 痕跡 | 0 | 0 | 0 | 00 | ||
1 | 文字列 8 | 0 | 1 | 0 | ふー | 00 | |
2 | 後藤 | 0 | 13 | 0 | 00 | ||
3 | OpenRead | 0 | 2 | 0 | 2 | 00 | |
4 | 巻き戻し | 0 | 11 | 0 | 00 | ||
5 | 桁 | 0 | 1 | 2 | 00 | ||
6 | ネ | 1 | 10 | 2 | colseq(BINARY) | 6a | |
7 | 桁 | 0 | 0 | 4 | 00 | ||
8 | 桁 | 0 | 1 | 5 | 00 | ||
9 | 結果行 | 4 | 2 | 0 | 00 | ||
10 | 次 | 0 | 5 | 0 | 01 | ||
11 | 近い | 0 | 0 | 0 | 00 | ||
12 | 停止 | 0 | 0 | 0 | 00 | ||
13 | 取引 | 0 | 0 | 0 | 00 | ||
14 | VerifyCookie | 0 | 5 | 0 | 00 | ||
15 | テーブルロック | 0 | 2 | 0 | ユーザー | 00 | |
16 | 後藤 | 0 | 3 | 0 | 00 |
name を前提とするクエリはuser_names
インデックスを使用します。
sqlite> explain select * from users where name='foo';
アドレス | オペコード | p1 | p2 | p3 | p4 | p5 | コメント |
---|---|---|---|---|---|---|---|
0 | 痕跡 | 0 | 0 | 0 | 00 | ||
1 | 文字列 8 | 0 | 1 | 0 | ふー | 00 | |
2 | 後藤 | 0 | 18 | 0 | 00 | ||
3 | OpenRead | 0 | 2 | 0 | 2 | 00 | |
4 | OpenRead | 1 | 3 | 0 | キー情報(1,BINARY) | 00 | |
5 | 無効です | 1 | 15 | 0 | 00 | ||
6 | 親和性 | 1 | 1 | 0 | bb | 00 | |
7 | SeekGe | 1 | 15 | 1 | 1 | 00 | |
8 | IdxGE | 1 | 15 | 1 | 1 | 01 | |
9 | IdxRowid | 1 | 2 | 0 | 00 | ||
10 | 求める | 0 | 2 | 0 | 00 | ||
11 | 桁 | 1 | 0 | 3 | 00 | ||
12 | 桁 | 0 | 1 | 4 | 00 | ||
13 | 結果行 | 3 | 2 | 0 | 00 | ||
14 | 次 | 1 | 8 | 0 | 00 | ||
15 | 近い | 0 | 0 | 0 | 00 | ||
16 | 近い | 1 | 0 | 0 | 00 | ||
17 | 停止 | 0 | 0 | 0 | 00 | ||
18 | 取引 | 0 | 0 | 0 | 00 | ||
19 | VerifyCookie | 0 | 5 | 0 | 00 | ||
20 | テーブルロック | 0 | 2 | 0 | ユーザー | 00 | |
21 | 後藤 | 0 | 3 | 0 | 00 |
使用EXPLAIN
するには、SQLite の仮想マシンである VDBE を理解する必要があります。
http://www.sqlite.org/opcode.html
しかし、これは見た目ほど難しくなく、クエリに関する完全なストーリーを提供します。