私は2つの列を持つ単純なテーブルを持っています: "id" INTEGERをキーに、 "data" INTEGER。sqlite:配列を保存しますか?
ユーザーの要件の1つは、データを表示する順序を保存することです。 私はテーブルのレコードの順序を保存する必要があります。
私が見ているように、単純な解決法:id、data、order_id。 しかし、この場合、ユーザーがテーブルのビューの真ん中にレコードを追加すると、 多くのレコードを更新する必要があります。
別の考え方:id、data、next_id、previous_id。 挿入は高速ですが、定義された順序でのレコードの抽出は遅いです。
したがって、テーブル のレコードの順序をsqliteで保存するのに最適な(高速な)方法は何ですか?高速=定義済みの順序でのレコードの高速挿入+高速抽出。
更新: order_idの問題は、新しいレコードの挿入時に見られます。 10×10^3のレコードがあると思います。新しいレコードを挿入すると、すべての10 * 10^3レコードが最悪の場合に更新されます。 sqliteデータベースファイルはフラッシュメモリ上にあります。だから、PCほど高速ではなく、フラッシュの寿命を延ばすために "書き込み"サイズを減らすほうがよいでしょう。
私が見るようにorder_idに問題があります。たとえば、5000個のレコードがあり、101個のレコードを挿入すると、4500個のレコードを更新する必要があります。 sqliteデータベースはフラッシュしています。だから、ハードディスクのあるPCほど遅いです。 – user1244932
まあ、それでは、順番に並べられたデータをどれくらい頻繁に検索するのか、それとも無秩序なIDを挿入するのかということがもっと重要です。 –
私はあなたにprevious_idとnext_idの両方が必要とは思わないただ1人で十分でしょう。また、挿入されたレコードを指すために、次/前のIDを持つレコードへの更新を意味します。 –