我寫此查詢:爲什麼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列是主鍵。爲什麼指數在這種情況下不會提高性能? 。
謝謝你的回答和對不起我的英語不好:(
添加索引有什麼用的是'EXISTS'子查詢的? – 2012-03-23 16:37:04
均場同一類型(INT? CHAR?)? – Konerak 2012-03-23 16:39:20
EXISTS子查詢看起來有點多餘,因爲你已經有了這個連接,不是嗎? – Konerak 2012-03-23 16:39:50