CHAR(5)与INT

时间:2010-08-14 13:18:34

标签: informix

INFORMIX-SE 7.1:

假设col5 CHAR(5)仅包含00001到99999之间的数字:

  1. CHAR(5)列使用5个字节的存储空间,INTEGER使用多少字节?
  2. INT列上的UNIQUE INDEX的执行速度是否比CHAR(5)快?
  3. INT列上的SELECT MAX()是否比col5 CHAR(5)上的MAX()快?

4 个答案:

答案 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(无符号)

顺便说一句,我不会使用CHARVARCHAR或任何字符串-y类型来存储数字。你只是在这里遇到麻烦。例如,如果使用字符串比较,则9大于10。你也会错过许多算术运算。

答案 2 :(得分:1)

INT. INT的4个字节更快!

有关详细信息,请查看此问题的所选答案:

答案 3 :(得分:1)

  
      
  • INFORMIX-SE 7.1:
  •   

越来越接近支持的版本(比4.10或2.10),但仍然需要十年甚至更多的支持。

  

假设col5 CHAR(5)仅包含00001到99999之间的数字:

     
      
  1. CHAR(5)列使用5个字节的存储空间,INTEGER使用多少字节?
  2.   
  3. INT列上的UNIQUE INDEX的执行速度是否比CHAR(5)快?
  4.   
  5. INT列上的SELECT MAX()是否比col5 CHAR(5)上的MAX()快?
  6.   
  1. Informix DBMS中INTEGER的4个字节。
  2. 略。它是否真正可衡量是值得商榷的,但是要比较的数据略少(少一个字节),因此可以做的更少。
  3. 同样,不太可能存在可衡量的差异。如果列上有索引,则两个操作都只访问索引。如果没有索引,那么两个操作最终都会读取表(表扫描),并且处理5个字符而不是4个字节会有微不足道的惩罚。