为什么我的主键有一个 `SQLITE_AUTOINDEX` 索引?我以为表本来就是这样的

为什么我的主键有一个 `SQLITE_AUTOINDEX` 索引?我以为表本来就是这样的

我有这张表:

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

相关内容