• ベストアンサー

インデックスの張り方について

・ユーザーID ・好きな食べ物名 という項目を保存するテーブルがあります。 ユーザーIDと好きな食べ物名でユニークとしますが、 検索はユーザーIDのみ、又は好きな食べ物名のみが多いです。 インデックスは下記で正解でしょうか? PK (ユーザー名、好きな食べ物名) KEY(ユーザー名) KEY(好きな食べ物名) なんかインデックス張りすぎな気がしちゃって・・ AutoIncrementを付けた方が良いなど アドバイスいただければ助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

データの重複度合いや具体的な検索条件、「ORDER BY」や「GROUP BY」の有無などが分からないと的確なアドバイスはできません。 >インデックスは下記で正解でしょうか? >PK (ユーザー名、好きな食べ物名) >KEY(ユーザー名) >KEY(好きな食べ物名) 「好きな食べ物名」が何百バイトといったデータでないなら、「ユーザ名」+「好きな食べ物名」のインデクスがあるのだから、「ユーザ名」だけのインデクスが必要ないように考えます。 また表の他の構成列にどんなものがあるのかによりますが、私なら「好きな食べ物名」は別表で「食べ物id」と共に管理し、「ユーザid」+「好きな食べ物id」でインデクスを構成します。これにより、重複情報量を減らすことができるし、一つのインデクス(ページ)で管理できる情報量を減って、インデクス段数が高くなりすぎないようにします。 >AutoIncrementを付けた方が良いなど この質問の趣旨とは、何ら関係がないですよね? インデクスが有効利用されているかは、EXPLAINを実行して、一度は確認しましょう。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

explainで効率を調べてみるとよいでしょう

参考URL:
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20040624/146333/?P=2

関連するQ&A