1

友情リクエスト用の SQL テーブルがあります。テーブルはサーバー上にあります - クライアントは携帯電話です

Table:
Key = index, int, auto increment
C1 = userA_ID
C2 = userB_ID
(C1, C2 = unique)
C3 = status (pending, accepted, declined, unfriend....)

モバイルでのより良い練習のために、友情リクエストテーブル全体を常にクエリしないように、デバイスのローカル DB にもテーブルを保存します。テーブルがクエリされると、ローカル DB に保存されるため、何も変更されていない場合、デバイスはサーバーからクエリを実行する必要はありません。

だから-アプリの初期化で...(またはデバイスのアプリのメールボックスに入るたびに)デバイスはサーバーに新しいメッセージと友情要求の更新があるかどうかを知るように求めています...メッセージの場合は簡単です-新しいメッセージごとには別の ID を持っており、id > 保存された id のすべてのメッセージをサーバー上で検索します。しかし、フレンドシップ リクエストについては、サーバーの DB の行を更新して、インデックスが同じインデックスのままになるようにします...

私は2つのオプションを考えました:

  1. 日付列を追加し、最後のチェックより後に行われた更新をチェックします (最後のチェックはローカル DB に保存されます)。日付ではなくインデックスで比較したい

  2. アプリの初期化時にユーザーのすべてのフレンドシップ リクエスト エントリを取得し、ローカルで比較を行う

推奨事項はありますか?より良いアイデア?

4

1 に答える 1

1

リクエストが表示されたかどうかを追跡するビット列を追加し、リクエストを取得するときにそれを true に設定してから、その列をフィルタリングできます。これはおそらく、日付と最後に取得した日付を保存し、その 2 つを毎回比較するよりもわずかに優れたパフォーマンスになるでしょう。

于 2012-02-07T18:11:47.977 に答える