我有这张表:
CREATE TABLE hash (
id INTEGER PRIMARY KEY NOT NULL,
base32 TEXT UNIQUE NOT NULL
);
CREATE INDEX hash_base32 ON hash(base32);
并sqlite3_analyzer
给了我这个:
*** Page counts for all tables and indices separately *************************
HASH_BASE32....................................... 15 14.3%
SQLITE_AUTOINDEX_HASH_1........................... 15 14.3%
HASH.............................................. 14 13.3%
我的问题是:(该表) 不是HASH
已经是用作主键索引的 btree 了吗id
?为什么有一个单独的SQLITE_AUTOINDEX_HASH_1
?如果其中一个是多余的,我希望我的数据库更小。
谢谢!
答案1
我在sqlite论坛上得到了答案:https://sqlite.org/forum/forumpost/bb62e57c5b
tl;dr:我在列上创建了两个索引base32
,而不是id
列。一个是通过UNIQUE
列约束,另一个是通过显式的CREATE INDEX
。