我有一个由两个表组成的数据库:
使用以下查询创建表:
CREATE TABLE IF NOT EXISTS ENTITE_CANDIDATE (ID INTEGER PRIMARY KEY NOT NULL, ID_KBP TEXT NOT NULL, wiki_title TEXT, type TEXT NOT NULL);"
CREATE TABLE IF NOT EXISTS VARIATIONS (ID INTEGER PRIMARY KEY NOT NULL, ID_ENTITE INTEGER, NAME TEXT, TYPE TEXT, LANGUAGE TEXT, FOREIGN KEY(ID_ENTITE) REFERENCES ENTITE_CANDIDATE(ID));"
我使用以下查询为以前的表编制索引:
`CREATE INDEX var_id ON VARIATIONS (ID, ID_ENTITE, NAME);`
`CREATE INDEX entity_id ON ENTITE_CANDIDATE (ID, wiki_title);`
我想从表 VARIATIONS 中检索以下记录:
"SELECT ID, ID_ENTITE, NAME FROM VARIATIONS WHERE NAME=foo ;"
每次选择查询都会占用 5.414931 秒。我知道该表包含大量记录。但我可以更快地进行检索吗?我正确地索引表吗?
答案 0 :(得分:1)
如果索引的初始列出现在WHERE子句中,则可以使用索引。
此查询仅使用NAME
列进行搜索,因此无法使用var_id
索引。 (该索引仅对使用ID
的查找很有用,因为ID
列已经被索引为PRIMARY KEY,所以这些查找大多无用。)