我在嘗試在黑莓上使用SQLite時克服了很多障礙。現在我已經達到了一切正常的地步,我正在尋找加快我的查詢的方法。黑莓SQLite最佳性能
有時我的應用程序獲取了很多Web服務調用的數據,該數據被解析並存儲到我的數據庫。大量的DELETE,INSERT和UPDATE正在進行中。數據庫調用似乎花費了很多時間。
我想知道一些處理SQLite時的最佳實踐。最好來自具有黑莓平臺經驗的人。任何技巧,以加快刪除或插入等....
鏈接到很好的教程將是巨大的。或者一些有用的代碼片段甚至更好。
在此先感謝。
編輯:
這是一些來自黑莓使用交易的示例代碼。
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.database.*;
import net.rim.device.api.io.*;
public class UsingTransactions extends UiApplication
{
public static void main(String[] args)
{
UsingTransactions theApp = new UsingTransactions();
theApp.enterEventDispatcher();
}
public UsingTransactions()
{
}
}
class UsingTransactionsScreen extends MainScreen
{
Database d;
public UsingTransactionsScreen()
{
LabelField title = new LabelField("SQLite Using Transactions Sample",
LabelField.ELLIPSIS |
LabelField.USE_ALL_WIDTH);
setTitle(title);
add(new RichTextField(
"Updating data in one transaction in MyTestDatabase.db."));
try
{
URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" +
"MyTestDatabase.db");
d = DatabaseFactory.open(myURI);
d.beginTransaction();
Statement st = d.createStatement("UPDATE People SET Age=7 " +
"WHERE Name='Sophie'");
st.prepare();
st.execute();
st.close();
st = d.createStatement("UPDATE People SET Age=4 " +
"WHERE Name='Karen'");
st.prepare();
st.execute();
st.close();
d.commitTransaction();
d.close();
}
catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
他們每次都關閉語句的原因是什麼?只是最後關閉它一次會更好嗎(在Finally塊或許??)。
第二份文件是黑莓之一,它看起來好像他們SQLite的包裝包括一個方式做你想要什麼。查看最後一節稱爲「使用批量操作方法」的部分,以及「使用顯式事務」。您也可以嘗試關閉日記功能,但是我個人發現這並沒有太大的區別。 – 2012-04-04 15:03:11
謝謝你們。我也在考慮使用VACUUM對數據庫文件進行碎片整理,應該多久進行一次這樣的操作,除了減小數據庫文件本身的大小外,還有其他方面的幫助嗎? – PaulG 2012-04-04 15:13:56