删除表vs删除其内容sqlite

时间:2013-05-15 16:46:23

标签: database sqlite android-sqlite

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

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

1-下降,撤回并填写表格

"DROP TABLE IF EXISTS TABLE_NAME"

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

"DELETE FROM TABLE_NAME"

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

2 个答案:

答案 0 :(得分:7)

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

  

截断优化

     

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

答案 1 :(得分:4)

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

无论你做什么,如果你有任何外键指向这个表,小心不要完全fubar这些引用。