我有这个巨大的(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,而且交易给了我想要的东西,但我不知道它是否多余。
感谢您的帮助!
答案 0 :(得分:0)
在阅读了评论和其他与stackoverflow相关的问题之后,我为查询的每一列创建了一个索引,我也设置了:
PRAGMA synchronize = OFF;
PRAGMA jorunal_mode = MEMORY;
有了这个,我花了大约20分钟来完成上面提到的UPDATE和6分钟的INSERT命令,考虑到文件大小(实际上是10gb),我认为这是合适的。
感谢所有人的关注!
编辑:关于David Stein的评论,这是正确的!您无法使用这些选项轻松破坏您的数据库。就我而言,它是一个非常可替换的可重建数据库,没有敏感数据。我随时都想重建它,我是唯一的用户。所以我需要它超快速! 也许这不是你的情况。