[英]How to speed up queries in sqlite android in db.execSql
我有以下代碼用於在數據庫中輸入數據。
public static void execSql(SQLiteDatabase db, String sql)
{
String[] parts = sql.split(";");
for (String entry : parts) {
db.execSQL(entry);
}
}
最初在sql字符串中所有“ INSERT ......”,然后執行每個插入循環。 總插入數為22908。數據輸入大約需要4分鍾,我認為這是很長的時間。 數據為7,95 MB。 有什么辦法可以加快介紹速度,並縮短到幾秒鍾?
INSERT INTO location ( 'latitude' , 'updated' , 'id' , 'longitude' , 'created' ) VALUES( '213.2000000' , '2014-08-25 11:07:42+00:00' , '1' , '321.0000000' , '2014-08-25 11:07:42+00:00' );
INSERT INTO location ( 'latitude' , 'updated' , 'id' , 'longitude' , 'created' ) VALUES( '42.7191000' , '2014-09-17 12:53:49+00:00' , '2' , '23.0834000' , '2014-09-17 12:53:49+00:00' );
......................
這是數據sql變量。
將工作包裝在事務中:
db.beginTransaction();
try {
// your SQL goes here
db.setTransactionSuccessful();
}
finally {
db.endTransaction();
}
現在,您正在為每個SQL語句執行一個事務,這非常慢。 每個事務都涉及磁盤I / O,與成千上萬個小磁盤I / O相比,執行一大批磁盤I / O效率要高得多。
使用准備好的語句也將逐漸有所幫助。
您正在執行僅具有不同參數值的同一查詢。 這就是為什么您可以利用預編譯的sql語句的原因。 您可以創建PreparedStatement對象,然后可以使用該對象多次有效地執行您的插入語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.