2015-07-12 36 views
0

如果我創建這樣一個表:sqlite:如果我已經有多列主鍵,我需要一個索引嗎?

CREATE TABLE IF NOT EXISTS Tiles 
(
    X INTEGER NOT NULL, 
    Y INTEGER NOT NULL, 
    Zoom INTEGER NOT NULL, 
    Type INTEGER NOT NULL, 
    Tile BLOB NULL, 
    PRIMARY KEY(X, Y,Zoom,Type) 
) 

我是否還需要添加一個(X, Y, Zoom, Type)指數,使搜索快?

我的搜索查詢是這樣的:

SELECT Tile 
FROM Tiles 
WHERE X = %1 AND Y = %2 AND Zoom = %3 AND Type = %4 

我插入查詢是這樣的:

REPLACE INTO Tiles(X, Y, Zoom, Type, Tile) 
VALUES(?, ?, ?, ?, ?) 
+0

索引不會幫助查詢規劃器,因爲主索引(PK是隱式索引)被覆蓋。 – user2864740

+0

使用[EXPLAIN QUERY PLAN](http://www.sqlite.org/eqp.html)檢查查詢是否使用索引。 –

回答

1

在SQLite的,當你聲明一個主鍵自動創建一個索引,例如見documentation,所以沒有必要創建另一個索引。

相關問題