MySQL对于定长的比较等运算速度远远大于对非定长的速度;
测试:
表结构:
CREATE TABLE `tb_num_addr_info` (
`Number` char(16) DEFAULT NULL,
`ProvName` char(64) DEFAULT NULL,
`CityName` char(64) DEFAULT NULL,
`CountName` char(64) DEFAULT NULL,
`DistrictCode` char(8) DEFAULT NULL,
KEY `Num` (`Number`),
KEY `Code` (`DistrictCode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tb_stiffness_bmi_info` (
`Stiffness` float DEFAULT NULL,
`MachNumber` char(16) DEFAULT NULL,
`Gender` char(8) DEFAULT NULL,
`Age` int(11) DEFAULT NULL,
`Height` int(11) DEFAULT NULL,
`Weight` int(11) DEFAULT NULL,
`BMI` float DEFAULT NULL,
KEY `machkey` (`MachNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
数据量:
速度比较:
很显然的速度比较,当group by province(left(ProvName,3)) 定长为3,而下面这个直接是ProvName速度上慢了很多;
当数据量比较大的时候这种优化效果就非常明显,但是如果只是上千条数据,可能并没有什么明显的差距;写较好的SQL,加快效率。