什么是重置SQLite表的最有效方法

这个问题在这里已经有了答案:

  • 提高SQLite的每秒插入性能? 10个答案

  • 这是一般性问题的一般答案,但其中一种解决方案可能对您有用:

  • 编辑:不支持使用TRUNCATE; 使用truncate优化不会向问题中已经尝试的解决方案添加任何内容。 如果无条件DELETE FROM [table]太慢,请尝试使用TRUNCATE TABLE 。 它可能要快得多; 在某些情况下,我一直如此。 不过,您必须为自己的情况设定基准。
  • 或者,尝试删除并重新创建表(如果多个线程同时与表对话,这可能会非常棘手;在这种情况下,您可能需要一个幂等表创建函数或锁定它)。
  • 如果所有这些速度太慢,则性能问题可能是由与数据库使用的持久性存储通信所花费的时间所致。 在这种情况下,你有其他几个选择:

  • 如果可能的话,确保您的sqlite数据库已经过性能调整。 这可能包括将其切换到/从WAL模式切换,和/或控制同步块大小或其他性能技巧。
  • 如果一切都失败了,可以对代码行为进行修改。 如果你可以用一个临时/唯一的名字创建一个新表,例如searchable_coins_489 (并且告诉代码在表中写入新名字),那么你可以“分手并忘记”删除操作:创建一个新线程,发出一个DROP TABLE在其中,然后在主线程中忘记它(不要等待它完成)。 由于数据库由相同的文件支持,因此可能不会产生与多进程远程数据库相同的性能优势,但它可能有助于您的某些情况 - 尤其是在您处于WAL模式时。 再次,基准是关键。
  • 链接地址: http://www.djcxy.com/p/19781.html

    上一篇: What is the most efficient way to RESET an SQLite Table

    下一篇: Sqlite insertion takes lot of time