私はBlackberryでSQLiteを使って作業しようとすると、多くのハードルを克服しました。今ではすべてがうまくいくようになってきており、質問をスピードアップする方法を探しています。Blackberry SQLiteの最適なパフォーマンス
私のアプリはウェブサービスコールから多くのデータを取得することがありますが、このデータは解析されてデータベースに保存されます。多くのDELETE、INSERT、UPDATEが続いています。データベース呼び出しには多くの時間がかかるようです。
SQLiteを扱う際のベストプラクティスを知りたいと思います。ブラックベリープラットフォームでそれを経験したことがある方が特にお勧めです。 DELETEやINSERTなどの速度を上げるためのあらゆるトリック....
良いチュートリアルへのリンクは素晴らしいでしょう。あるいは、便利なコードの一部をさらに良くする。
ありがとうございます。
編集:ここでは
は、トランザクションを使用して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();
}
}
}
毎回ステートメントを閉じる理由はありますか?最終的に一度それを閉じるのが良いのではないでしょうか?
2番目の文書はBlackberryのもので、SQLiteラッパーにはあなたが望むものを正確に行う方法が含まれているかのように見えます。最後の「一括操作方法の使用」と「明示的なトランザクションの使用」のセクションを見てください。ジャーナリングをオフにしてみることもできますが、個人的には大きな違いはありません。 –
ありがとうございます。私はまた、VACUUMを使用してデータベースファイルのデフラグを行いました。どのくらいの頻度でこれを実行する必要がありますか?DBファイル自体のサイズを減らす以外の方法で役立ちますか? – PaulG