sqlite:如果我已经有多列主键,我需要一个索引吗?
问题描述:
如果我创建这样一个表: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(?, ?, ?, ?, ?)
索引不会帮助查询规划器,因为主索引(PK是隐式索引)被覆盖。 – user2864740
使用[EXPLAIN QUERY PLAN](http://www.sqlite.org/eqp.html)检查查询是否使用索引。 –