私はゲームと呼ばれるテーブルを持っています。MySQL - インデックスの最適化 - ゲームに関連付けられたユーザー
メンバー(ユーザー名で一意)というテーブルがあります。
各ゲームでは、一度に最大6人のメンバーが参加できます。
しかし、メンバーはゲームから辞めることができます。しかし、私はまだ彼らがそのゲームに巻き込まれたという記録を残す必要があります。
は、私は、次の独立した検索を実行する必要があります。メンバーの
アクティブなゲームを。
メンバーを辞任されたゲーム。
空のスロット(つまり、メンバーで満たされていない場所)のゲームを検索します。
このために最適なテーブル構造は何でしょうか? 退会したすべてのゲームのリストがカンマで区切られたメンバーのためにテキストフィールドを入力する必要がありますか? (これで私が見ることができる問題は、これらのゲームのゲーム情報が最終的に必要になることです。そのため、これらのゲーム番号ごとにゲームテーブルを個別に検索する必要があります。 )
ゲームでは、SLOT1、SLOT2など現在のプレーヤーのユーザー名などの6つのテキストフィールドが必要ですか?しかし再び、退会したメンバーはどうですか? NOW
(上記のすべての混乱を引き起こした)私の質問の主要部分:
私は私のテーブルの上に私のインデックスを設定する方法を?
私は検索をしているときに、SLOTS1などを見てゲームを見て、プレーヤーのユーザー名と一致するものがあるかどうかを調べます。これは6回のOR検索です。これらのアクションのためにデータベースのインデックスを最適化するにはどうすればよいですか?
その後、各ゲームの辞任メンバーをどのようにして行うのですか。インデックスを作成するにはどうすればよいですか?
どのようにあなたのメンバーのために(おそらく文字列である代わりに、ユーザー名の)整数主キーを使用して起動した場合はどうですか? –
これはSLOTS1などでintを必要とするだけで助けになることがわかります。これはおそらく検索の方が速いでしょう。しかし、Indexesの主な問題は、それだけで解決されないでしょう。 – Rewind
もちろん解決策ではありませんが、解決すべき重要な問題は確かです。主キーがデータに依存しない場合は重要です。メンバーが何らかの理由でユーザー名を変更した場合、大きなデータベースではかなりオーバーロードされているインデックス全体を再配置する必要があります。だから、文字列対intの問題だけではありません。 –