テーブルが 1 つしかない sqlite データベース (約 50,000 行) があり、Java と sqlitejdbc を使用して update-otherwise-insert 操作を繰り返し実行します (つまり、存在する場合は行を更新し、そうでない場合は新しい行を挿入しようとします)。私のテーブルは、「単語」列と「頻度」列があり、主キーがない単語頻度テーブルに似ています!
問題は、この update-otherwise-insert 操作を何十万回も実行し、平均して挿入または更新操作に 2 ミリ秒以上かかることです。挿入操作に 20 ミリ秒かかる場合もあります。また、テーブルには、挿入操作で「where」句を使用する列 (「単語」列) にインデックスがあることにも言及する必要があります。これにより、当然、挿入操作がより高価になります。
最初に、50,000 行のインデックス付きテーブルでの挿入操作の 2 ミリ秒が正常であり、見落としがないかどうかを確認したいと思います。その後、パフォーマンスを改善するための提案は大歓迎です。大量の挿入操作を実行する前にインデックスを削除し、後で再作成するのは良い方法だと思いましたが、同じ単語を持つ行が既に存在するかどうかを確認する必要があるため、ここでは実行できません。
「ハードウェアに依存する」や「コードの残りの部分に依存する」などについてはすべて知っていますが、平均的なPCで挿入操作にどれだけの時間がかかるかを理解できると思います。