私はtable2のvakyesを使用してtable1から値を減らす必要がある2つのテーブル、table1(非常に大きな)とtable2(はるかに小さい)でこの巨大な(8 GB/14126762行)Sqlite3遅い更新
私は小さなデータベース(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は、トランザクションに堪能ではない - 私は私が望んで与えたが、それは冗長な場合、私は知りません。
ありがとうございました!
あなたの関係はインデックスに登録されていますか?そうでない場合は、更新する前にインデックスを作成するのがよいでしょう。 –
次のインデックスのみをインデックス化しますか? CREATE INDEX MyLittleIndex ON table1(vl_empenho); CREATE INDEX MyLittleIndex2 ON table2(vl_estorno); – nicmano
ローカルまたはネットワークドライブにsqliteファイルを保存していますか? –