我有一个SQLite表,需要一些列,并添加了大约一百万行。
添加列然后添加行,行,然后添加列会更快吗?
列和行都是空值。稍后我将使用另一个脚本用数据填充它们。
更新:Sqlite文档说:“AlterTable在具有1行的表上运行速度与10M行一样快”(http://www.sqlite.org/lang_altertable.html)
所以我的问题实际上是:
使用更多列添加行会减慢吗?
答案 0 :(得分:1)
当您向表中添加新列时,SQLite不会更改表数据本身。 如果表记录的列少于表定义,则假定缺少的列为NULL。当UPDATE影响该记录时(或当您插入新记录时),表记录将以完整列数写入。
因此,在添加列之前添加空记录会将更少的数据写入数据库。 (这可能是差异太小而不明显。)
然而,最大的性能问题可能是稍后更新记录。 如果可能的话,您应该插入包含最终数据的记录,并避免更新它们。
答案 1 :(得分:0)
启动事务,然后添加行,并提交事务。否则Sqlite会在每次插入后尝试提交到磁盘,导致速度慢得多。