3

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 インデックスが必要ですか?

4

2 に答える 2