Laravel 中将执行的 sql 打印出来,执行时间二十多秒。放在 Navicat 中执行,只需要几百毫秒

[laravel中将执行的sql打印出来,放在Navicat中执行,只需要几百毫秒。但是laravel中打印出来执行的时间是二十多秒。]
(https://cdn.learnku.com/uploads/images/201...)
上面是在laravel中打印出来的,sql复制到Navicat里面执行只需要几十毫秒。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 8

代码有循环?

5年前 评论
childe (楼主) 5年前
Stone7777 (作者) 5年前
颠倒的玉石

你分片取他应该能快一点。我遇到一次特别复杂的sql,用框架就是慢,后来写了存储过程快了不少,毕竟源生还是有自己有点

5年前 评论

理论上来说,差距不应该这么大,肯定是某个环节出现了问题。
现在只看到了框架打印出来的sql执行时间,但并没有看到navicat那一部分的截图,所以不好判断。
诊断的方式有很多,可以从mysql慢查询开始一步一步去debug,可以开启sql执行的记录

从帖子来看你有两处地方不严谨,第一,图片显示出了问题。
第二,sql复制到navicat的执行时间有出入,第一次说要几百毫秒,第二次说要几十毫秒。所以我觉得你口述的信息可能不可靠,所以想看navicat执行的sql和耗时的截图。

5年前 评论

感谢大家的回答,我就用原生的sql来写的,速度很正常

5年前 评论

也许不是这一条 sql 的问题, 是多条sql 导致的,

你找下这次请求所有的 sql 记录, 看看有几条 sql

5年前 评论

建议可以使用laravel/telescope,观察一下SQL日志

5年前 评论

难道是查询缓存的问题,laravel是第一次查询很慢,复制到Navicat第二次查询直接返回查询的缓存结果?

5年前 评论

这种连表查的,如果连表很多的话,最好是做视图,

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!