Thinkphp Sql语句优化问题?
$log_join = "left join __CUSTOMER__ b on a.customer_code = b.customer_code";
$log_data = M('log')->alias('a')->where("b.customer_code != ''")->join($log_join)->field("log_id,create_date,content,creator,belong_to_user,a.customer_code,follow_up_way")->select();
$log_length = count($log_data); *//*
$this->assign("log_data",$log_data);
$this->assign("log_length",$log_length);
$this->display();
执行M('log')->getLastSql();
的语句
SELECT `log_id`,`create_date`,`content`,`creator`,`belong_to_user`,a.customer_code,`follow_up_way` FROM gs_log a left join gs_customer b on a.customer_code = b.customer_code WHERE ( b.customer_code != '' )
其中gs_customer
客户表里面有1万条数据,gs_log
日志表的数据有42万条,这句sql
语句是关联他们的客户编码,当log表的客户编码=customer
表的客户编码时,就归类到所属客户下面
现在一执行这个动作,就报502错误,请问怎么优化?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我很好奇,42w的数据,全部都要返回给前端吗?看你的sql语句是全部查出来了,貌似这个要分页吧?
说个非技术的解决这种大批量的问题,一般大数据量需要展示出来,都要加上
查询
+分页
这两个组合来过滤,比较很多列表页只显示几十条而已嘛,所以,你看下,在这个思路上,看看能不能解决你的问题给两个表的customer_code 字段加上索引,where条件用a表!=''来限制,最后进行limit限制条数(分页)