0

在尝试在 Blackberry 上使用 SQLite 时,我克服了许多障碍。现在我已经到了一切似乎都可以正常工作的地步,我正在寻找加快查询速度的方法。

有时我的应用程序从 Web 服务调用中检索大量数据,这些数据被解析并存储到我的数据库中。很多 DELETE、INSERT 和 UPDATE 正在进行。数据库调用似乎需要很多时间。

我想知道处理 SQLite 时的一些最佳实践。最好来自在黑莓平台上具有相关经验的人。任何加快删除或插入等的技巧......

好的教程的链接会很棒。或者一些有用的代码片段更好。

提前致谢。

编辑:

这是来自 Blackberry 的一些使用事务的示例代码。

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 块中??)。

4

3 回答 3

3

标准技术是在事务内的循环内使用准备好的插入语句。在大多数情况下,这将为您提供几乎最佳的效率。它将加快速度至少一个数量级。

于 2012-04-04T14:54:05.173 回答
2

我个人不知道很多特定于黑莓的做法,但这些似乎很有帮助(抱歉我找不到代码片段):

《8 大 SQL 最佳实践》

“最佳实践:优化 SQLite 数据库性能”

希望这些帮助!

于 2012-04-04T14:51:21.523 回答
1

您应该做的一件事是,为数据库处理代码创建不同的方法。并简单地从您的主代码中调用这些方法,并在每个块中打开关闭数据库。它将减少冗余,对您的未来更好。这也将帮助您提高应用程序的性能。

于 2012-04-05T04:32:46.690 回答