- ベストアンサー
インデックスの張り方について
・ユーザーID ・好きな食べ物名 という項目を保存するテーブルがあります。 ユーザーIDと好きな食べ物名でユニークとしますが、 検索はユーザーIDのみ、又は好きな食べ物名のみが多いです。 インデックスは下記で正解でしょうか? PK (ユーザー名、好きな食べ物名) KEY(ユーザー名) KEY(好きな食べ物名) なんかインデックス張りすぎな気がしちゃって・・ AutoIncrementを付けた方が良いなど アドバイスいただければ助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
データの重複度合いや具体的な検索条件、「ORDER BY」や「GROUP BY」の有無などが分からないと的確なアドバイスはできません。 >インデックスは下記で正解でしょうか? >PK (ユーザー名、好きな食べ物名) >KEY(ユーザー名) >KEY(好きな食べ物名) 「好きな食べ物名」が何百バイトといったデータでないなら、「ユーザ名」+「好きな食べ物名」のインデクスがあるのだから、「ユーザ名」だけのインデクスが必要ないように考えます。 また表の他の構成列にどんなものがあるのかによりますが、私なら「好きな食べ物名」は別表で「食べ物id」と共に管理し、「ユーザid」+「好きな食べ物id」でインデクスを構成します。これにより、重複情報量を減らすことができるし、一つのインデクス(ページ)で管理できる情報量を減って、インデクス段数が高くなりすぎないようにします。 >AutoIncrementを付けた方が良いなど この質問の趣旨とは、何ら関係がないですよね? インデクスが有効利用されているかは、EXPLAINを実行して、一度は確認しましょう。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
explainで効率を調べてみるとよいでしょう