私はオンラインのiPhoneターン制ゲームを持っており、同時にたくさんのゲームが実行されています。私とサーバーの両方が今日クラッシュしたので、私はコードを最適化する過程にあります。
これはセットアップです:
現在、すべてのアクティブな一致を追跡する1つのテーブル「一致」(各行に70フィールドのデータ。構造)があります。7秒ごとに、iphoneが接続し、アクティブになっている「一致」テーブルのすべての一致をダウンロードして、iphoneのUIを更新します。
これは、約1,000人がゲームをダウンロードしてプレイするまではうまく機能しました。サーバーがクラッシュしました。
したがって、最適化するために、「matches_needs_update」という新しいテーブルを作成できると思います。このテーブルには2つの行があります。名前とID。「id」は「matches」テーブルの一致と同じです。一致が更新されると、このテーブルに配置されます。
ここで、「一致」テーブル全体を検索する代わりに、クエリは、プレーヤーに更新が必要な一致があるかどうかを確認し、「一致」テーブルからそれらの一致を取得します。
私の質問は2つあります:
- これは最適なソリューションですか?
プレーヤーがアクティブな場合、たとえば10試合で、「試合」テーブルからそれらの10試合を同時に取得する良い方法はありますか、または試合ごとに1つずつ、10クエリを実行するforループが必要ですか?
「SELECT*FROMはWHEREid=?に一致します」
前もって感謝します