私は、非常に肥大化していると思うかなり大きなテーブル(約82,000,000行)があるプロジェクトに取り組み始めました。フィールドの1つは次のように定義されます。
consistency character varying NOT NULL DEFAULT 'Y'::character varying
ブール値として使用されます。値は常に('Y' |'N')のいずれかである必要があります。
注:チェック制約などはありません。
私はこの分野を変えることを正当化する理由を考え出そうとしています。これが私が持っているものです:
- ブール値として使用されているので、それを作成します。明示的は暗黙的よりも優れています。
- 現在、テキストに変換できるものはすべてそこに盲目的に入るため、コーディングエラーから保護します。
これが私の質問です。
- サイズ/ストレージはどうですか?dbはUTF-8です。ですから、その点で実際にはそれほど節約はないと思います。は1バイトである必要がありますが、UTF-8では
boolean
aも1バイトである必要があります'Y'
(少なくとも、Pythonで長さを確認するとそれが得られます)。ここで節約できる他のストレージオーバーヘッドはありますか? - クエリのパフォーマンス?Postgresは、 "
=TRUE
" vs. ""の原因でパフォーマンスが向上し='Y'
ますか?