私は、ユーザーが異なるユーザーから複数のメッセージを受け取るiPhoneアプリケーションを作成しています。これらのメッセージは、sqlite3データベースに格納されます。ユーザは、受信したメッセージを1人のユーザから削除したい場合があるかもしれないが、古いユーザを削除した後も、そのユーザから新しいメッセージを受信し続けることを確実にする。メッセージを取得するので、sqlite3のパフォーマンスの面では何が良いですか?不必要な行を削除するか、不要に設定しますか?
は、ユーザーが(パフォーマンスの面で)メッセージを削除したいときシナリオが使用することをお勧めしSELECT
ステートメントを使用して行われます。
DELETE
通常、すべての古いメッセージSELECT Messages FROM TableName WHERE UserID = (?) AND IsDeleted = 0
:のようなステートメントを使用して、新しいメッセージを取得タイプ
- :とのようなステートメントを使用して新しいものを取得するために継続
INTEGER
の表に、このフィールドに1を設定し
DELETE
要求に応じて、その後にフィールドを追加します
SELECT Messages FROM TableName WHERE UserID = (?)
もう1つシナリオ1(通常DELETE
)を使用すると、ディスク上のデータベースファイルの断片化が発生しますか?
事前に感謝します。
あなたの答えはありがたいですが、これは別の疑問を提起します。私はいくつかのアプリケーションは、ユーザーがそれらを削除した後にメッセージを保持していることに気づいた。あなたはそれが自分の理由を持っていると思いますが、それはパフォーマンスとは関係ありません。 – antf
私が見たことのないアプリについては推測できません。そのことについては、それらのアプリの作者がパフォーマンスや信頼性について全く気にしないかどうかはわかりません。実際に自分が行った選択の理由を実際に知っていない限り、自分の設計を実装に基づいて行うべきではありません。 – StilesCrisis