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,加快效率。