2011-12-16 9 views
0

SQLiteプリペアドステートメントは、クエリとraw SQLステートメントを実行する良い方法のようです。私はちょうどそれらがどれくらい長く保持されるべきか疑問に思っています。Android SQLiteのプリペアドステートメントのライフサイクル

ステートメントを静的にコンパイルすることは安全です。つまり、一度だけコンパイルして、多くのクエリで同じステートメントを使用してください。 これはスレッドセーフではない場合は、スレッドローカルではどうですか? 逆に、準備された文は一度しか使用しない場合にはまだ推奨されていますか?プリペアドステートメントの

答えて

1

利点は以下のとおりです。

  • 実行計画がキャッシュされますと、パフォーマンスが良くなります。

  • 入力をエスケープするのは良い方法です。 の値です。

  • バインドされていない変数を持たないステートメントの場合、データベース は自由に最適化することができます。個々のクエリはより速く になりますが、面倒な点はデータベース のコンパイルを常に行う必要があることです。これは 高速クエリのメリットより悪いです。 Javaプログラミングについては

答えをStatement and PreparedStatement

+0

おかげで顔をしています。 SQLiteもコンパイル後にプリペアドステートメントをキャッシュするかどうか知っていますか?つまり、同じSQLで2つのステートメントをコンパイルすると、最初にコンパイルされたステートメントを再利用できるようになります。キャッシュがある場合は、それがクリアされたことを知っていますか?おそらくデータベース接続が終了していますか? – bluphoenix

関連する問題