在SQLite中,将列指定为INTEGER PRIMARY KEY使列成为rowid的别名,这意味着SELECT语句可以非常快,因为它们可以利用存储数据的B树结构。
通过在列上指定CREATE UNIQUE INDEX来获得相同的性能级别吗?特别是,如果我们在INTEGER列上创建UNIQUE INDEX,那么SQLite是否会使该列成为rowid的别名,并具有相应的性能优势。
我目前看到它的方式,指定INTEGER PRIMARY KEY将至少与CREATE UNIQUE INDEX一样好,并且可能更好。
答案 0 :(得分:1)
通过rowid检索或排序记录很快。搜索具有特定rowid的记录,或者搜索指定范围内rowid的所有记录的速度大约是通过指定任何其他PRIMARY KEY或索引值进行的类似搜索的两倍。
和
如果rowid表的主键由单个列组成,并且该列的声明类型为" INTEGER"在大写和小写的任何混合中,该列成为rowid的别名。
没有其他方法可以使列成为rowid的别名。