SQLiteでインデックスが使われているかどうか確認する

sql
EXPLAIN QUERY PLAN SQL_QUERY;

でクエリ実行計画を確認できる。

sql
CREATE TABLE IF NOT EXISTS `bank` 
 (
   `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
   `bank_code` TEXT NOT NULL, 
   `name` TEXT NOT NULL, 
   `kana` TEXT NOT NULL
 );

たとえばこういうテーブルがあったときにbank_codeでデータを取得するクエリの実行計画を見てみると、下記のようになる。

EXPLAIN QUERY PLAN SELECT * FROM bank WHERE bank_code = "0001"

selectid    order       from        detail          
----------  ----------  ----------  ----------------
0	    0           0	    SCAN TABLE bank

bank_codeにインデックスを追加すると、下記のようになる

sql
CREATE UNIQUE INDEX `index_bank_bank_code` ON `bank` (`bank_code`)
EXPLAIN QUERY PLAN SELECT * FROM bank WHERE bank_code = "0001"

selectid    order       from        detail          
----------  ----------  ----------  ----------------
0	    0           0	    SEARCH TABLE bank USING INDEX index_bank_bank_code (bank_code=?)

explain SQL_QUERYでもクエリがどのように実行されているかを確認することができる。
SQLのパフォーマンスを検証したいときには便利そう

参考