私はこのクエリを書いた:SQLiteインデックスが高速クエリではないのはなぜですか?
INSERT INTO KeysTable (KeyText, Id)
SELECT KeyText as BKT, KeysTable.ID as CID FROM KeysTable
INNER JOIN StatTable ON KeysTable.ID = StatTable.Key_ID
WHERE StatTable.StatCommandCode = 4 AND
EXISTS (SELECT 1 FROM StatTable WHERE StatCommandCode = 4 AND StatTable.Key_ID = CID);
私は
AND StatTable.Key_ID = CID
条件を削除すると、クエリが非常に速くなるだろうことを知っています。また、私が
AND StatTable.Key_ID = 444 // (444 - random static number)
と置き換えると、そのクエリも非常に高速になります。
CREATE INDEX IF NOT EXISTS StatsIndex ON StatTable (Key_ID);
とKeysTableにID列が主キーである:この状態で列が索引付けされ、両方。この場合、索引でパフォーマンスが向上しないのはなぜですか?
答えと私の悪い英語:(申し訳ありませんのためのおかげで
にインデックスを追加してみてくださいすることができますか? –
両方のフィールドは(INT同じ種類ありますか? CHAR?)? – Konerak
EXISTSサブクエリはすでに参加しているので余計なようですね。 – Konerak