PRIMARY KEY(col1, col2)
「sqlite_autoindex_mytable_1」というインデックスを作成します。「SQlite Expert」で見ました。「インデックスするフィールド」ボックスには、col1 と col2 の両方が表示されます。
この投稿: https://dba.stackexchange.com/a/14260 では、col1 を使用せずに JOIN クエリで col2 を使用する場合は、col2 に個別のインデックスを作成する必要があると書かれています。
したがって、次を追加する必要があります。
CREATE INDEX "myidx" ON "mytable"("col2");
このクエリがある場合:
SELECT t2.* FROM mytable as t1
INNER JOIN mytable2 as t2 ON t1.col2 = t2.id
col2 のインデックスはまだ必要ですか? 私はそれを使用col1
していません。
そして、このクエリはどうですか:
SELECT t2.* FROM mytable as t1
INNER JOIN mytable2 as t2 ON t1.col2 = t2.id WHERE t1.col1 = x
ここでは col1 を使用していますが、where 句で使用しています。まだ col2 インデックスが必要ですか?