long-sql优化实例 todo

CREATE TABLE `HBT_MessageFlow` (
   `Id` int(11) NOT NULL AUTO_INCREMENT,
   `ShopId` int(11) DEFAULT NULL,
   `Receive` varchar(50) NOT NULL COMMENT '接收方',
   `ConfigId` int(11) DEFAULT NULL COMMENT '配置信息模版id',
   `RefType` int(11) NOT NULL COMMENT '类型',
   `RefId` varchar(50) NOT NULL COMMENT '类型值',
   `SendStatus` int(11) NOT NULL COMMENT '发送状态',
   `Meno` varchar(200) NOT NULL COMMENT 'meno',
   `Content` varchar(1000) NOT NULL COMMENT '参数内容',
   `AddTime` datetime NOT NULL,
   `UpdateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
   PRIMARY KEY (`Id`),
   KEY `IX_ADDTIME` (`AddTime`),
   KEY `IX_UPDATETIME` (`UpdateTime`),
   KEY `IX_RECEIVE` (`Receive`),
   KEY `IX_REFTYPE` (`RefType`),
   KEY `IX_REFID` (`RefId`)
  ) ENGINE=InnoDB AUTO_INCREMENT=1384415 DEFAULT CHARSET=utf8 COMMENT='发送消息记录表'

Table Information
Created: 2016-09-12
Engine: InnoDB
Rows: 815558
Size: 282 MiB
Encoding: utf8_general_ci
Auto-Increment: 1384415

原始long-sql

explain select Id ,shopId,receive, configId, refType, refId, sendStatus, meno, content,addTime from HBT_MessageFlow WHERE ConfigId = 13 and Receive = '18358169297' and SendStatus = 200 Order by AddTime desc limit 1

645ms

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEHBT_MessageFlowindexIX_RECEIVEIX_ADDTIME5 66Using where

增加limit

explain select Id ,shopId,receive, configId, refType, refId, sendStatus, meno, content,addTime from HBT_MessageFlow WHERE ConfigId = 13 and Receive = '18358169297' and SendStatus = 200 Order by AddTime desc limit 10

2.287s

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEHBT_MessageFlowindexIX_RECEIVEIX_ADDTIME5 663Using where
explain select Id ,shopId,receive, configId, refType, refId, sendStatus, meno, content,addTime from HBT_MessageFlow WHERE ConfigId = 13 and Receive = '18358169297' and SendStatus = 200 Order by AddTime desc limit 184

26ms

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEHBT_MessageFlowrefIX_RECEIVEIX_RECEIVE152const12192Using index condition; Using where; Using filesort

去除desc

explain select Id ,shopId,receive, configId, refType, refId, sendStatus, meno, content,addTime from HBT_MessageFlow WHERE ConfigId = 13 and Receive = '18358169297' and SendStatus = 200 Order by AddTime limit 1
idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEHBT_MessageFlowindexIX_RECEIVEIX_ADDTIME5 66Using where

更改order列

explain select Id ,shopId,receive, configId, refType, refId, sendStatus, meno, content,addTime from HBT_MessageFlow WHERE ConfigId = 13 and Receive = '18358169297' and SendStatus = 200 Order by Id desc limit 1
idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEHBT_MessageFlowrefIX_RECEIVEIX_RECEIVE152const12192Using where

删除SendStatus和ConfigId条件

explain select Id ,shopId,receive, configId, refType, refId, sendStatus, meno, content,addTime from HBT_MessageFlow WHERE Receive = '18358169297'  Order by AddTime desc limit 1

1ms

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEHBT_MessageFlowindexIX_RECEIVEIX_ADDTIME5 66Using where

更改Receive条件为15901736035(特征:首次命中记录的id靠前)

explain select Id ,shopId,receive, configId, refType, refId, sendStatus, meno, content,addTime from HBT_MessageFlow WHERE ConfigId = 13 and Receive = '15901736035' and SendStatus = 200 Order by AddTime desc limit 1

1ms

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEHBT_MessageFlowrefIX_RECEIVEIX_RECEIVE152const184Using index condition; Using where; Using filesort

Receive + Addtime联合查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值