Thinkphp Sql语句优化问题?

发布于 2022-09-04 09:56:32 字数 976 浏览 21 评论 0

  $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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏尔 2022-09-11 09:56:32

我很好奇,42w的数据,全部都要返回给前端吗?看你的sql语句是全部查出来了,貌似这个要分页吧?

说个非技术的解决这种大批量的问题,一般大数据量需要展示出来,都要加上查询+分页这两个组合来过滤,比较很多列表页只显示几十条而已嘛,所以,你看下,在这个思路上,看看能不能解决你的问题

安稳善良 2022-09-11 09:56:32

给两个表的customer_code 字段加上索引,where条件用a表!=''来限制,最后进行limit限制条数(分页)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文