回答:
これは良い考えでしょうか?
番号。
numeric(6,0)
より少ないバイトを取るでしょうか?
番号。
test=> SELECT pg_column_size(INT4 '999999'), pg_column_size(NUMERIC(6,0) '999999');
pg_column_size | pg_column_size
----------------+----------------
4 | 10
(1 row)
パフォーマンスはどうですか(このテーブルは頻繁に照会されます)?
もっとゆっくり。任意の精度値であるため、2進化10進数として格納されます。
numeric
列をに変更する際に問題はあり int
ますか?
決定的な答えはあなたの質問すべてにノーです。整数は常に、それを使用できるものなら何でも利用できる方法です。(例えば、お金)
少し考えてみてください。データベースエンジンは、整数を検出すると、解釈が少ないため、非常に効率的に処理します。整数です。数値型は文字列のように動作します。エンジンは、最初に小数点の前後の部分を把握し、それらを適切にマッサージして数値演算を実行する必要があります。
人間にとっては数値型の方が便利ですが、整数を使用する方が常に数値よりも効率的です。
NUMERIC
。スケーリングされた整数は、お金のために浮動小数点値を使用するよりもはるかに優れています。