INFORMIX-SE 7.1:
假设col5 CHAR(5)仅包含00001到99999之间的数字:
答案 0 :(得分:4)
CHAR(5)
将始终使用5个字节的空间(自mySQL 4.1以来的多字节编码中的10个),因为每个字符可以存储255个不同的字符(甚至更多的多字节编码)。
无符号SMALLINT
(0..65535)将取2,无符号MEDIUMINT
(0 ... 16,700万)3个字节。
底线:对数字数据使用CHAR类型总是浪费空间。
至于其他两个问题:
INT列上的UNIQUE INDEX是否比CHAR(5)执行得快?
非常非常可能是的,因为索引不需要是字母数字,并且可以使用较少量的数据
INT列上的SELECT MAX()是否比col5 CHAR(5)上的MAX()快?
极其可能是的,因为要在CHAR列上运行数字函数,必须在每条记录上执行类型转换。
参考:
答案 1 :(得分:2)
INT uses 4 bytes.你可以用INT存储0 ... 4294967295(无符号)
顺便说一句,我不会使用CHAR
,VARCHAR
或任何字符串-y类型来存储数字。你只是在这里遇到麻烦。例如,如果使用字符串比较,则9大于10。你也会错过许多算术运算。
答案 2 :(得分:1)
答案 3 :(得分:1)
- INFORMIX-SE 7.1:
越来越接近支持的版本(比4.10或2.10),但仍然需要十年甚至更多的支持。
假设col5 CHAR(5)仅包含00001到99999之间的数字:
- CHAR(5)列使用5个字节的存储空间,INTEGER使用多少字节?
- INT列上的UNIQUE INDEX的执行速度是否比CHAR(5)快?
- INT列上的SELECT MAX()是否比col5 CHAR(5)上的MAX()快?
醇>