1

我在 SQLite 中有一个包含大约 100 行和 6 个文本列(不超过一百个字符)的表的程序。每单击一个按钮,程序就会在视图中显示表格中一行的内容。

我的问题是我应该将整个表的内容复制到一个数组中,然后每次用户单击按钮时从数组中读取,还是每次用户单击按钮时访问数据库中的表?哪个效率更高?

4

3 回答 3

2

这一切都取决于,但是在需要数据时从数据库中检索(而不是将整个数据存储在数组中)通常是最有效地使用内存,这是一种非常宝贵的资源。我最奢侈的内存使用是存储一组表唯一标识符(即主键列表,以正确的顺序返回),这样我就不会每次都扫描数据库,但我的唯一标识符总是数字,所以它不会占用太多内存。所以,对于这种大小的东西,我通常:

  • 打开数据库;
  • ORDER BY加载一个仅包含表的唯一标识符的数组(使用 SQL子句以正确的顺序为我的表视图返回);
  • 随着表格单元的构建,我将返回数据库并获取与我为该表格行跟踪的唯一标识符相对应的那一行所需的几个字段;
  • 当我转到详细信息视图时,我将再次从数据库中获取那一行;和
  • 完成后,我将关闭数据库

这会产生良好的性能,同时不会过多地消耗内存。如果表格不同(大得多或小得多),我可能会建议不同的方法,但鉴于您对数据的描述,这对我来说似乎是合理的。

于 2012-07-11T16:05:10.947 回答
0

对我来说 - 为每个视图加载重新读取数据库并在完成后删除内容要容易得多。

将内容保存在内存中的开销太大,无法抵消小数据集的快速读取。

于 2012-07-11T15:35:45.353 回答
0

100 行 6 列并不是很多数据。iOS 能够处理比这更大的数据并且非常有效。所以不用担心创建一个新数组。从数据库读取应该可以正常工作。

于 2012-07-11T15:51:06.313 回答