私のデータベース テーブルのほとんどには、90% の確率でルックアップが行われる明確な一意のインデックスがありますが、これについては少し確信が持てません。データベース内のアイテムに対するユーザーの評価の合計を追跡するテーブルがあります。別のテーブルを追加し、IP アドレス列を使用して個々の評価を追跡し、誰も何かを 2 回評価できないようにします。これが大きくて使用頻度の高いテーブルになることがわかっているので、正しく最適化することが重要です。(MYSQL テーブル)
このテーブルには次のフィールドがあります。
rating_id (常に - 一意)、item_id (常に - 一意ではない)、user_id (オプション - 一意ではない)、ip_address (常に - 一意ではない)、rating_value (常に - 一意ではない)、has_review(bool)
今、私はクエリが次のようになることを 90% 想定しています。
ユーザーが何かを評価した場合 - item_id = x および ip_address = y を選択 (行 = 0 の場合) 評価を挿入
ユーザー アカウント ページの場合 - ip_address = x または username = y の場所を選択します
現在、検索対象のフィールドはどれも一意ではありません。それらをインデックスとして引き続き使用できますか (item _id と ip_address など)。