SQLite记录更新速度提升

时间:2017-04-23 01:29:45

标签: database performance sqlite

我目前无法在一段合适的时间内大规模更新SQLite数据库记录。

我有一个大约70,000条记录的小型数据库,我有一些办公室用户使用Navicat来过滤记录并进行一些批量修改。当尝试对一个字段中的大量记录执行UPDATE时,所有内容都会爬行,当我查看原始SQL查询时,我可以看到程序正在使用UPDATE ..SET .. WHERE来执行操作。

我的问题是我该怎么做才能帮助这个查询更快地运行?我在用于匹配要更新的记录的列上有一个SQLite自动索引,但我已经阅读并搜索了所有已经存在的已解决的任何其他解决方案。更新20,000条记录中的一个字段实际上需要接近3个小时...无论是否使用Navicat。整个数据库只有30mb,所以我必须做错事。

所有其他数据库操作运行良好而快速,不确定是什么错误并寻找SQLite兽医的一些指导。

1 个答案:

答案 0 :(得分:0)

为什么SQLite的表现与你描述的一样糟糕,但是我经历了几乎相同的事情。

首先,如果您在索引列上执行表格范围的更新,那么您将会使整个索引崩溃,同时使索引变得无用。在更新之前删除索引,然后重新创建索引。

此外,您可以通过更改同步PRAGMA来获得一些严重的性能提升,但它会导致崩溃时数据损坏的非零额外风险(根据我的经验极不可能)

PRAGMA schema.synchronous = 0