下記のようなテーブルに5万件程度のデータが入っております。
データの中身ですが、映画のタイトル(日本語と英語)、登場人物が入力されております。
title_jp,title_en,characterそれぞれでユーザーが部分検索をする仕様です。
この場合、どのようにIndexを張ればよいでしょうか。
title_jp,title_en,characterの3つを複合Indexとするのがいいのではないかと考えておりますが、
いかがでしょうか。
id,title_jp,title_en,character,
3094,エアマスター,Air Master,Tachibana,
3095,エアマスター,Air Master,Tomiko Seriguchi,
3096,エアマスター,Air Master,Tsukio Taketsugu,
3097,エアマスター,Air Master,Yoshinori Konishi,
3098,エアマスター,Air Master,Yuukorin,
補足)
用途や構成など分かりにくい部分が多く申し訳ありませんでした。
まず構成ですが、参考のURLのように一つのフォームで映画のタイトルや出演者を同時に検索+サジェスト機能を持ったものをイメージしていただければと思います。
この検索に引っかかるように、ユーザーが部分検索をしている際にAjaxでDBにアクセス、サジェスト結果を下に出るウインドウに表示させます。
ユーザーが該当の選択肢(該当タグ)を選び、「検索」ボタンを押すと、バインドされているtag_idを投げ、別に用意されているuser_idとtag_idが入力された中間テーブルをもとに同じタグをお気に入り登録しているユーザーの情報を「検索結果」として表示できます。
この「サジェスト」は例に挙げているtitle_jp,title_en,characterの全ての結果が必要となります。
その為、それぞれのデータを正規化し各自で保有しておくと、検索の際3つのテーブルをスキャン、該当のデータを見つけた後に3つのjoinが必要となるので逆に辛くなるのではと考えております。
知識がないので誤った考えかもしれません。
アドバイスを頂ければ幸いです。よろしくお願い致します。
回答4件
あなたの回答
tips
プレビュー