Sqlite3更新慢
Sqlite3 slow UPDATE
我有一个巨大的(8 GB/14126762 行)和两个表,table1(非常大)和 table2(小得多),我需要使用 table2 vakyes 从 table1 中减少一个值。
虽然我使用较小的数据库(5MB 数据库)做了一些测试,但没问题。但是现在,当我在更大的数据库上使用它时,它需要很长时间,而且我根本不知道它是否有效。
例如,使用 INSERT 命令创建数据库需要 12 分钟。
麻烦的交易如下:
UPDATE table1
SET vl_empenho = vl_empenho -
(SELECT vl_estorno
FROM table2 WHERE table1.cd_ugestora =
table2.cd_ugestora AND table1.dt_ano =
table2.dt_ano AND table1.nu_empenho =
table2.nu_empenho)
WHERE cd_ugestora IN (SELECT table2.cd_ugestora FROM
table2 WHERE table1.dt_ano =
table2.dt_ano AND table1.nu_empenho =
table2.nu_empenho);
我不精通Sqlite,交易给了我想要的,但我不知道它是否多余。
感谢您的帮助!
阅读评论和其他与Whosebug相关的问题后,我为查询中的每一列做了一个索引,我也设置了:
PRAGMA synchronize = OFF;
PRAGMA jorunal_mode = MEMORY;
这样,考虑到文件大小(实际上是 10gb),我花了大约 20 分钟来执行上面提到的 UPDATE 和 6 分钟来执行 INSERT 命令,我认为这是合适的。
感谢大家的关注!
编辑:关于 David Stein 的评论,这是真的!你不能轻易地用这些选项破坏你的数据库。就我而言,这是一个非常可替换的可重建数据库,没有敏感数据。我可以随时重建它,而且我是它的唯一用户。所以我需要它非常快!
也许这不是你的情况。
我有一个巨大的(8 GB/14126762 行)和两个表,table1(非常大)和 table2(小得多),我需要使用 table2 vakyes 从 table1 中减少一个值。
虽然我使用较小的数据库(5MB 数据库)做了一些测试,但没问题。但是现在,当我在更大的数据库上使用它时,它需要很长时间,而且我根本不知道它是否有效。
例如,使用 INSERT 命令创建数据库需要 12 分钟。
麻烦的交易如下:
UPDATE table1
SET vl_empenho = vl_empenho -
(SELECT vl_estorno
FROM table2 WHERE table1.cd_ugestora =
table2.cd_ugestora AND table1.dt_ano =
table2.dt_ano AND table1.nu_empenho =
table2.nu_empenho)
WHERE cd_ugestora IN (SELECT table2.cd_ugestora FROM
table2 WHERE table1.dt_ano =
table2.dt_ano AND table1.nu_empenho =
table2.nu_empenho);
我不精通Sqlite,交易给了我想要的,但我不知道它是否多余。
感谢您的帮助!
阅读评论和其他与Whosebug相关的问题后,我为查询中的每一列做了一个索引,我也设置了:
PRAGMA synchronize = OFF;
PRAGMA jorunal_mode = MEMORY;
这样,考虑到文件大小(实际上是 10gb),我花了大约 20 分钟来执行上面提到的 UPDATE 和 6 分钟来执行 INSERT 命令,我认为这是合适的。
感谢大家的关注!
编辑:关于 David Stein 的评论,这是真的!你不能轻易地用这些选项破坏你的数据库。就我而言,这是一个非常可替换的可重建数据库,没有敏感数据。我可以随时重建它,而且我是它的唯一用户。所以我需要它非常快! 也许这不是你的情况。