- ベストアンサー
曜日を格納する方法はどちらが良いですか?
チェックボックスを付けた曜日だけ集計したいのですが、 曜日をどちらの形でテーブルに格納すべきか悩んでいます。 通常どちらにすべきでしょうか? 何か明確なメリットがあれば教えてほしいです。 案1)レコード数=ID数で済むが、曜日検索時はLIKEの部分一致 id day_of_week(int) 1 12 2 17 最大1万レコード 案2)レコード数=ID数xチェックした曜日。曜日検索時時は完全一致 id day_of_week(int) 1 1 1 2 2 1 2 7 最大7万レコード
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
案2の方が、正規化されているので検索性はよいでしょう。 普通はdate形式でもたせてweekdayで検索するのが妥当では? というか案1はintでもたせてlikeで検索するのは 適切ではないでしょう。 likeは前方もしくは後方一致に最適化されていたはずなので %n%的な使い方を想定しているなら期待値ほどのスピードには ならないかも。 まぁ7万件程度の少ないデータであればそれほど気にすることも ないでしょうけど。 1案にするなら、日~土までの曜日ごとにフィールドを設定して フラグを立てるとかもありですかねぇ・・・
お礼
やはり、%n%的な使い方はNGですよね・・ありがとうございます。 weekdayで検索するという発想はありませんでした。参考になります。 ただ、今回は、毎週何曜日という要件なので、 とりあえず、案2)で行こうと思います。