やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

SQLite3ドットコマンド(.expert)

 インデックスを提案してくれる。

成果物

.help

.expert                  EXPERIMENTAL. Suggest indexes for specified queries

 インデックスを提案してくれる。実験的な機能。

.exit

echo "create table users(id primary key, name text, class text);
insert into users(name, class) values('Yamada','A');
insert into users(name, class) values('Suzuki','B');
insert into users(name, class) values('Tanaka','A');
" > create_0.sql
sqlite3 :memory: \
".read create_0.sql" \
".expert" \
"select * from users where class='A';"
CREATE INDEX users_idx_000b3ffe ON users(class);

SEARCH TABLE users USING INDEX users_idx_000b3ffe (class=?)

 おお、インデックス作成SQL文が出た。

 単にwhere句で指定された列をインデックスにしているだけ? インデックスは重複しない値であるほうが好ましいらしいから「id列のほうがいいんじゃね?」とは提案してくれないのだろうか。まあされても困るか。なにせclassを条件にしたいので。

 SEARCH ...は知らん。なにこれ。

関連コマンド

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux

前回まで