# テーブル構造 user_item: { user_id:int(11), item_id:int(11), count:int(11), }
上記のようなテーブル構造で、
- user_id 単体で検索することがある
- item_id 単体で検索することはほとんどない
- count 単体で検索することはない
- user_id と item_id で検索することがある
- レコードは user_id と item_id の組み合わせでユニークである
- idの種類の数は user_id > item_id
といった想定の運用をする場合、インデックスの貼り方としては
- A:user_id
- B:usre_id,item_id
- C:uniq(user_id,item_id)
- D:uniq(item_id,user_id)
- E:user_id, uniq(user_id,item_id)
- F:user_id, uniq(item_id,user_id)
※uniq() はユニークな複合インデックスを表しています。
といった構成が予想されるかと思いますがどれが一番良いのでしょうか。
個人的な見解としては
- 速度を求めるなら「F」
- 堅牢性を求めるなら「C」
- DBの容量を考慮するなら「A」
かなと考えており、B、D、E、にはメリットはないのかな想定しています。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。