当你和别人都能实现一个某个功能,这时候区分你们能力的不是谁干活多少,而是谁能写出效率更高的代码。比如显示一个订单列表它不仅仅是写一条SELECT SQL那么简单,我们还需要很清楚的知道这条SQL他大概扫描了多少行数据,返回了多少行数据,是否需要创建索引,创建什么样的索引,索引是否生效,等等。
这里以订单列表显示和订单导出为例来谈谈Mysql分页优化。
发现问题
下边是一个订单表的简单表结构。里边有大概270万条数据,其中渠道ID为35的有132万调数据。
CREATE TABLE IF NOT EXISTS `order_info` (
`order_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单ID',
`order_sn` varchar(60) NOT NULL COMMENT '订单号',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`channels_id` int(11) NOT NULL COMMENT '渠道ID',
……一些其他字段
`order_time` datetime NOT NULL COMMENT '下单时间',
PRIMARY KEY (`order_id`),
KEY `channels_id` (`channels_id`),
KEY `order_sn` (`order_sn`),
KEY