mysql 订单表 按arrival_time查询一个月的订单并导出到excel,会超时,arrival_time已设置为索引,tp5框架,请问怎么优化?

wenlong_15 2020-08-12 11:21:20
mysql wp_order_goods订单表 按arrival_time查询一个月的订单并导出到excel,会超时,arrival_time已设置为索引,tp5框架,请问怎么优化?
查询时有关联3-4个表,
当前的需求是查询当月,比如:月初查询上一个月整月的数据,wp_order_goods表全部有200多万条数据
请问怎么优化好?我现在的想法是在arrival_time字段里缩小在某一个时间内,比如:order by (arrival_time desc) 但是不知道怎么操作?
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenlong_15 2020-08-15
  • 打赏
  • 举报
回复
换了一种思路做了,
1.count出全月的数据总条数,在前端/500,用pormise以500一次请求 php接口,limit500条数据,最后生成excel,已经实现好了。
Kevin.Y.K 2020-08-14
  • 打赏
  • 举报
回复
定时任务月初把上月的数据备份到一张单独的表中,查询全部走备份表,也可以缓存到内存中。
大雨将至 2020-08-13
  • 打赏
  • 举报
回复
看你说arrival_time设置了索引,但是你where语句里并没有用到arrival_time,应该在pay_time上建
inner join的右侧表的on字段上也就是order_sn也必须建索引

关联4张表,挺难优化的。如果建了索引仍然慢到难以接受,建议考虑用空间换时间,就是建一张包含全部必须字段的表,业务中通过定时复制或者消息中间件同步数据。然后把这个单表用于导出
wenlong_15 2020-08-13
  • 打赏
  • 举报
回复
SELECT `g`.`isgifts`,`og`.`sku`,`og`.`sname`,`og`.`cprice`,`og`.`amount_r`,`sp`.`v1`,`order`.`uid`,`order`.`openid`,`og`.`s_id`,`order`.`o_status`,`order`.`o_amount`,`order`.`second_paid_amount`,`og`.`wenqu`,og.brand_id as brandid,og.cate_id as cateid,`og`.`merchant_id`,`og`.`created`,`order`.`book_time`,`order`.`id`,`order`.`order_sn`,`og`.`sku`,`og`.`number`,`og`.`price`,`og`.`product_amount`,`order`.`consignee`,`order`.`cellphone`,`order`.`gtype`,`og`.`g_name`,`og`.`sa_name`,`og`.`sv_name`,`og`.`arrival_time`,`og`.`token`,`og`.`og_status`,`order`.`payment_id` FROM `wp_order_goods` `og` INNER JOIN `wp_order` `order` ON `og`.`order_sn`=`order`.`order_sn` LEFT JOIN `wp_goods_spec` `sp` ON `og`.`gid`=`sp`.`gid` LEFT JOIN `wp_goods` `g` ON `og`.`gid`=`g`.`id` WHERE ( order.isdel=0 and og.sku NOT IN (\'ZH1522034504538\',\'ZH1522035283918\') and order.jl_status=0 and og.og_status IN (300,400,500,600,1500,2200,2400) and order.pay_time BETWEEN \'1593532800\' and \'1596211200\' )
过眼浮云866 2020-08-13
  • 打赏
  • 举报
回复
把你的sql贴出来看看,200+W的数据,查一个月,应该不会超时的,肯定是写法的问题

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧