4

在我的应用程序中,我必须删除表格的全部内容并多次重新填充

在那种情况下,我有两个解决方案:

1-删除,重新创建并填充表格

"DROP TABLE IF EXISTS TABLE_NAME"

2-删除所有内容并重新填充

"DELETE FROM TABLE_NAME"

现在哪种解决方案更有效?

4

2 回答 2

7

http://www.sqlite.org/lang_delete.html

截断优化

当 DELETE 语句中省略 WHERE 并且被删除的表没有触发器时,SQLite 使用优化来擦除整个表内容,而不必单独访问表的每一行。这种“截断”优化使删除运行得更快。

于 2013-05-15T16:54:15.230 回答
4
  • 如果您在此表中有任何唯一的基于 1 的自动递增 id,则删除和重新创建该表可能会将该计数器重置为 1,而删除和重新填充将从上次使用的自动递增值继续计数器。
  • 在没有 WHERE 子句的情况下删除表中的所有内容将截断表,这非常快,并且避免了 SQLite 单独删除每一行的过程。

无论您做什么,如果您有任何指向此表的外键,请注意不要完全混淆这些引用。

于 2013-05-15T16:54:24.047 回答