別のデータベースから1つのテーブルを更新する必要があります。私はそれを添付し、削除して挿入します。挿入は速くなりますが、削除には非常に長い時間がかかりました。 200kレコードでは約1分かかりました。どのように速くそれを行うには?Sqliteで遅いDELETE
db.execSQL("attach database '" + db_path + "' as db2");
db.beginTransaction();
try {
db.execSQL("DELETE FROM CategoryProduct_MM WHERE PrdID IN (SELECT PrdID FROM db2.CategoryProduct_MM)");
db.execSQL("INSERT INTO CategoryProduct_MM SELECT * FROM db2.CategoryProduct_MM");
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
sqlitebrowserは4秒
ために同じ操作を行うアップデート:ここ
が
CREATE TABLE CategoryProduct_MM(CategoryID INTEGER, PrdID INTEGER)
CREATE UNIQUE INDEX CategoryProduct_MM_CatID_PrdID_idx ON CategoryProduct_MM(CategoryID,PrdID);
CREATE INDEX CategoryProduct_MM_CatID_idx ON CategoryProduct_MM(CategoryID);
CREATE INDEX CategoryProduct_MM_PrdID_idx ON CategoryProduct_MM(PrdID);
'drop table'は次のように使用できます:' db.execSQL( "DROP TABLE IF EXISTS" + CategoryProduct_MM); ' – NSimon
あなたはPrdIDにインデックスを持っていますか? – Selvin
@NicolasSimonテーブルを削除すると、すべての行が削除されますが、選択した行だけを削除したい場合(具体的には、別のテーブルの中に 'PrdId'があるもの) – user2340612