在SQLite中,CREATE UNIQUE INDEX或INTEGER PRIMARY KEY的性能更高

时间:2015-08-02 04:30:32

标签: sql sqlite

在SQLite中,将列指定为INTEGER PRIMARY KEY使列成为rowid的别名,这意味着SELECT语句可以非常快,因为它们可以利用存储数据的B树结构。

通过在列上指定CREATE UNIQUE INDEX来获得相同的性能级别吗?特别是,如果我们在INTEGER列上创建UNIQUE INDEX,那么SQLite是否会使该列成为rowid的别名,并具有相应的性能优势。

我目前看到它的方式,指定INTEGER PRIMARY KEY将至少与CREATE UNIQUE INDEX一样好,并且可能更好。

1 个答案:

答案 0 :(得分:1)

documentation说:

  

通过rowid检索或排序记录很快。搜索具有特定rowid的记录,或者搜索指定范围内rowid的所有记录的速度大约是通过指定任何其他PRIMARY KEY或索引值进行的类似搜索的两倍。

  

如果rowid表的主键由单个列组成,并且该列的声明类型为" INTEGER"在大写和小写的任何混合中,该列成为rowid的别名。

没有其他方法可以使列成为rowid的别名。