mysql docsのマニュアルの私の理解から、DECIMAL
9桁の倍数ごとに4バイトが必要であり、残りの桁には次のバイトが必要であると記載されています。
number of digits leftover | bytes
0 | 0
1 | 1
2 | 1
3 | 2
4 | 2
5 | 3
6 | 3
7 | 4
8 | 4
では、adecimal(12,6)
は合計ストレージで6バイトに相当しますか?
ゼロが埋め込まれるため、小数部分は常に6桁になりますが、整数部分はそうではありませんDECIMAL(12,6)
。列の場合、ストレージは行ごとまたは列定義で評価されますか?
例
DECIMAL(12,6)
1: 178.999999 // 3 digits for integer part so total would be 5 bytes?
2: 0.880000 // 1 digits for integer part so total would be 4 bytes?
3 123456.123456 // 6 digits would equal 6 bytes?
または、宣言された場合、常に6バイトになりますか(12,6)
?
編集
また、として宣言され(5,5)
た小数は格納に6バイトかかり、として宣言された小数(12,6)
も格納に6バイトかかります。ストレージサイズは問題ではないので、サイズの違いはmysqlが列を取得またはインデックス付けする方法に影響しますか?