この記事は、前回書いたデータモデリングの9つのことの4つ目です。
crmprogrammer38.hatenablog.com
件数が多ければ多いほど結合の処理時間がかかってきます。
なので、物理的に問題がないなら結合するキー項目のサイズを極力小さくします。
具体的には、
・CHARではなく、VARCHAR
・文字型のキー項目があって、その項目はただ、連番に、左に0詰めしているだけだったら、数値項目
・日付項目で時刻を含まないなら、数値(YYYYMMDDの数値にする)
・もちろん桁数も短くできるなら削ります(業務的に必ず10バイトなのに、30バイトなどで定義しない)
純粋に格納するバイト数が小さくなるように定義します。
だからといって、全てのディメンションのキー項目を数値型のサロゲートキーにする必要はありません。個人的にはナチュラルキーをベースとして、どうしてもというところだけサロゲートキーにするというのが良いと思っています。
性能が良いデータベースを買ったのだから気にしないなんてのは勿体無いです。データベースの性能を引き出しましょう。早くて困る人はいませんし、何より開発者も幸せになれます。