在rowid表的rowid上创建索引

时间:2017-04-14 07:53:41

标签: sqlite

有sqlite表结构:

![1]:https://i.stack.imgur.com/Hp1lp.png

我创建了两个索引,第一个是: CREATE INDEX atc_index ON category ( ATC ); 第二个是: CREATE INDEX atc_index ON category ( id, ATC ); 因为id是主整数键,所以id是rowid。因此我认为这两个指数是一样的。但我发现这两个索引在同一个查询上花费的时间不同。平均而言,第一个指数成本的时间是第二个指数成本的十倍。 SQL查询是否重要或有其他原因

1 个答案:

答案 0 :(得分:0)

两个索引都是排序列表,每个条目包含ATC值和rowid。

但是,第一个索引按ATC排序,而第二个索引按rowid排序。这意味着后者仅用于搜索rowid值,该值不需要以索引开头。