SQL varchar 型の文字数とディスクの使われ方と検索パフォーマンスについて

前提

PostgreSQL の設計における varchar の最大文字数の決定することを検討中

実現したいこと

SQLやディスクの気持ちになって最大文字数を決定したい

知りたいこと

UTF-8 で日本語を使った文字列を varchar 型として格納したいのですが、例えば varchar(20) とした場合、database ファイルには
・データ未格納時 = 領域を確保しない
・日本語10文字(30bytes)のデータ格納時 = 30bytes の領域を確保し保存
・データ削除時 = その領域をリリース
という理解であっているでしょうか?

そうすると何のため varchar で最大文字数を決めるのか意義が分からなくなり、もしかしたらデータ格納時にバイト数分確保するのかな?とも思いましたが、そうすると UTF-8 は 4-bytes 文字もあるので4 bytes 分を確保しなければなりませんし、それは無いかな、と思い。
じゃあ text 型と比べて検索パフォーマンスが違うのかな、とも考えましたが、調べた感じはっきりしませんでした。(大差無い、というような記述もありました。)

コメントを投稿

0 コメント