CHARかVARCHARか

DB設計において、該当カラムが固定長文字列であればCHAR 型に、文字数が定まらない場合はVARCHAR 型にだと思っていたのだが、そんなことはないのか??

レビュー指摘で「できるだけCHAR 型に寄せろ」と言われたのだが、文字数定まらないのもCHAR にすんのか??

調べてみると、VARCHAR 使いすぎると行移行なる問題が発生するようだった。

行移行

d.hatena.ne.jp

これの「行移行とは」という章が分かりやすかった。

レコードを登録する時に、カラムを初め1バイトの文字だけで登録していたとする。そして、Updateでそのカラムのデータを4000バイトまで増やしたとしよう。そのカラムが、可変長型(VARCHARやNUMBERなど)であれば増えたデータは別ブロックに格納されるのだ。

つまり、更新が頻発するテーブルにVARCHAR をあまり使うべきでない、と理解したがどうだろう。

あれ、でも、あのテーブル更新はなかったような。。