2

私はジレンマの状況にあり、どちらが優れているかわかりません。私のウェブサイトに 100++ (またはそれ以上) のゲームがあるとしましょう。各ゲームのハイスコアを保存したい。すべてのハイスコアを 1 つのテーブルに保存する必要がありますか、それとも各ゲームに独自のテーブルを用意する必要がありますか?

比較:

1 テーブル: 1 つのテーブルには多くの行 (データ) が含まれます。すべてのユーザーが異なるゲームをプレイすると、このテーブルにスコアが送信されます。多くのユーザーが同時に送信するとどうなるかわかりません。このテーブル構造は、gameID、name、score である必要があります。したがって、1 つのクエリを作成して、1 つの php ページでどのゲームのハイスコアを表示するかを確認します。

複数のテーブルを使用する場合 (各ゲームには独自のテーブルがあります)、テーブルは多くなりますが、行 (データ) ははるかに少なくなります。

長い目で見るとどっちがいい?SQLのパフォーマンスはどうですか?

私はphpとmysqlを使用しています。

4

2 に答える 2

3

プレーヤー用のテーブル、ゲーム用のテーブル、および player_id、game_id、およびハイスコア値を使用したハイスコア用の多対多のテーブルを作成します。

討論

100.000 人のプレイヤーと 500 のゲームがある場合、最大 50.000.000 のエントリを持つことができます。しかし、それらは数値的で非常に短いものです。ライブ クエリを使用してこのハイスコアを提供するのではなく、キャッシュされたファイルからの結果を提供することをお勧めします。これは、ほぼ全員が行っている方法です。キャッシュされたハイスコアのリストを毎日更新します。このようにして、書き込みをライブで行い、キャッシュからの読み取りを行い、それらが干渉することはありません。

もう 1 つの提案は、ハイスコア テーブルを毎月リセットするか、アクセス頻度に基づいて古いデータを分けておくことです。Facebook は、主任開発者のプレゼンテーションで見たように、このようなことを行っています。

于 2009-07-28T09:52:57.223 に答える
2

単一テーブル オプションを使用する必要があります。そうすれば、ゲームを追加するときに、データベース スキーマを変更する必要がなくなります。

データベースは、このようなデータに対処するように設計されています。1 つのテーブルに大量のデータが含まれていても、インデックスが正しく作成されている限り、問題は発生しません。

于 2009-07-28T09:54:23.100 に答える