【发布时间】:2012-01-16 17:26:43
【问题描述】:
我正在编写一个 iPhone 应用程序,其中用户接收来自不同用户的多条消息。这些消息存储在 sqlite3 数据库中。随着时间的推移,用户可能希望删除从某个用户收到的消息,但可以肯定的是,在删除旧消息后,他将继续收到来自该用户的新消息。
由于检索消息将使用SELECT 语句完成,因此当用户想要删除消息时使用哪种方案更好(就性能而言):
-
DELETE所有旧消息正常并继续使用如下语句检索新消息:SELECT Messages FROM TableName WHERE UserID = (?) - 在
INTEGER类型的表中添加一个字段,并根据DELETE请求将此字段设置为1,然后使用如下语句检索新消息:SELECT Messages FROM TableName WHERE UserID = (?) AND IsDeleted = 0
还有一件事,如果使用场景1(普通DELETE),这会导致磁盘上的数据库文件出现任何碎片吗?
非常感谢。
【问题讨论】:
标签: iphone ios database performance sqlite