CHARかVARCHARか
DB設計において、該当カラムが固定長文字列であればCHAR
型に、文字数が定まらない場合はVARCHAR
型にだと思っていたのだが、そんなことはないのか??
レビュー指摘で「できるだけCHAR
型に寄せろ」と言われたのだが、文字数定まらないのもCHAR
にすんのか??
調べてみると、VARCHAR
使いすぎると行移行なる問題が発生するようだった。
行移行
これの「行移行とは」という章が分かりやすかった。
レコードを登録する時に、カラムを初め1バイトの文字だけで登録していたとする。そして、Updateでそのカラムのデータを4000バイトまで増やしたとしよう。そのカラムが、可変長型(VARCHARやNUMBERなど)であれば増えたデータは別ブロックに格納されるのだ。
つまり、更新が頻発するテーブルにVARCHAR
をあまり使うべきでない、と理解したがどうだろう。
あれ、でも、あのテーブル更新はなかったような。。