删除表vs删除其内容sqlite

MBH*_*MBH 4 database sqlite android-sqlite

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

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

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

"DROP TABLE IF EXISTS TABLE_NAME"
Run Code Online (Sandbox Code Playgroud)

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

"DELETE FROM TABLE_NAME"
Run Code Online (Sandbox Code Playgroud)

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

小智 7

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

截断优化

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


jef*_*unt 5

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

无论您做什么,如果您有任何外键指向该表,请小心不要完全禁止这些引用。