我有一个iOS应用程序,它广泛使用sqlite3数据库。我需要在这些表的大部分中添加一列。这些表都不是我真正考虑过的大表(我习惯于处理MySQL表中的数百万行),但是鉴于iOS设备的硬件限制,我想确保它不会成为问题。最大的表将是几十万行。它们中的大多数将是几百到几千或数万。

我注意到sqlite3只能将列添加到表的末尾。我假设这是针对某种类型的速度优化,尽管可能只是数据库文件格式的约束。


在sqlite3表中添加一行的时间成本是多少?
它只是更新架构而不更改表数据吗?
时间是否随表中已有的行数或列数增加?




我知道明显的答案是“只是测试”,我很快就会这样做,但是经过几分钟的搜索,我在StackOverflow上找不到答案,所以我想问一下,以便其他人可以找到此信息将来更容易。

最佳答案

从SQLite ALTER TABLE documentation


  ALTER TABLE命令的执行时间与
  表中的数据量。 ALTER TABLE命令以最快的速度运行
  在具有1000万行的表上,就像在具有1行的表上一样。


该文档暗示该操作为O(1)。它应该在可以忽略的时间内运行。

关于ios - Sqlite3中ALTER TABLE ADD COLUMN的速度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9166828/

10-14 23:27