MySQL GROUP BY优化 固定长度分组与非固定长度分组

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值