SQLite で、約 100 行と 6 列のテキスト (100 文字以内) のテーブルを使用するプログラムがあります。ボタンをクリックするたびに、プログラムはテーブルの行の内容をビューに表示します。
私の質問は、テーブル全体の内容を配列にコピーしてから、ユーザーがボタンをクリックするたびに配列から読み取るか、ユーザーがボタンをクリックするたびにデータベース内のテーブルにアクセスする必要があるかということです。どちらがより効率的ですか?
それはすべて依存しますが、データ全体を配列に格納するのではなく、必要に応じてデータベースから取得することは、一般的に非常に貴重なリソースであるメモリを最も効率的に使用することです。私の最も贅沢なメモリの使用は、テーブルの一意の識別子 (つまり、正しい順序で返される主キーのリスト) の配列を格納することです。これにより、データベースを毎回スキャンする必要はなくなりますが、一意の識別子は常に数値であるため、メモリをあまり消費しません。したがって、このサイズの何かについては、一般的に次のようにします。
ORDER BY
)。これにより、メモリを大量に消費することなく、優れたパフォーマンスが得られます。テーブルが異なっていた場合 (はるかに大きいまたははるかに小さい)、別のアプローチを提案する可能性がありますが、データの説明を考えると、これは合理的なようです。
100 行と 6 列は、多くのデータではありません。iOS は、それよりも大きなデータを非常に効率的に処理できます。したがって、新しい配列の作成について心配する必要はありません。データベースからの読み取りは問題なく動作するはずです。
私にとっては、ビューの読み込みごとにデータベースを再読み込みし、完了したらコンテンツを削除する方がはるかに簡単でした。
コンテンツをメモリに保持するオーバーヘッドは、小さなデータセットの迅速な読み取りを相殺するには大きすぎました。