在前辈指导下,把tinyint索引字段改成了char速度就快了很多,这是为什么?

解决方案 »

  1.   

    因为字符索引是一个字符一个字符比较 而int或者tinyint是整个数字比较,字符索引可能需要比较多差 而int或者tinyint只需要比较一次, 如果char类型只有一位,比如只是A,B,C...那样的速度是差不多的
      

  2.   

    晕啊, 一般情况下都是 数字型的比字符型的快。如果你的查询是这样的。select * from t where c = '1'如果 c 是 tinyint 则可能要转换类型, 利用不到索引, 则慢些。
      

  3.   


    首先你需要明白实际对于计算机来说, 耗时长短在于比较的次数而不是每次比较的字节数
    目前大部分计算机是32位的系统,这正好匹配整形4个字节长度,一个字符长度是1个字节,CPU在比较的时候一次比较四个字节(32位),对于1个字节的只需要高位补0即可(或许这个补0操作根本没有,默认情况下高位就全部是0),所以说当是位字符的时候是差不多的,这是我的理解,欢迎大家积极讨论