SQLite优化 - 两个数据库与一个数据库

时间:2011-04-22 10:05:41

标签: iphone sqlite optimization multiple-databases

我正在开发一个带有两个SQLite数据库的iPhone应用程序。我想知道我是否应该只使用一个。

第一个数据库有十几个小表(每个表有四个或五个INTEGER或TEXT列)。大多数表只有几十行,但一个表将有几千行“项目”。这些表都是相关的,因此它们之间有很多连接。

第二个数据库只包含一个表。它有一个BLOB列,其中一行与第一个数据库中的某些“Items”相关(项目的照片)。这些BLOB仅用于程序的一小部分,因此它们很少与第一个数据库连接或连接(可以在不连接的情况下轻松获取行)。

第一个数据库文件大小约为1兆字节;带有BLOB的数据库会大得多 - 大约50兆字节。我分离了BLOB,因为我希望能够备份较小的数据库,而不必携带BLOB。我还认为分离BLOB可能会提高较小表的性能,但我不确定。

有两个数据库(特别是SQLIte数据库)来分离BLOB的优点和缺点是什么,而只有一个数据库,其中一个表中包含非常窄的表与BLOB表混合在一起?

1 个答案:

答案 0 :(得分:1)

即使在50 MB,这是一个非常小的数据库大小,并且由于数据库本身的大小,您不会看到性能差异。

但是,如果您认为性能是问题,请检查您的数据库查询,并确保在您不需要该信息的查询中不“选择”BLOB行。从数据库中返回的行数超出了您的需要(将其视为从硬盘驱动器中读取的数据超出了您的需要),这是您更有可能看到性能问题的地方。

除非您对备份的总大小有非常严格的限制,否则我认为没有任何优点可以将它们分开。它只会增加应用程序中奇怪位置的复杂性。