Laravel 雄辩的查询性能vs PDO

Laravel 雄辩的查询性能vs PDO,laravel,eloquent,Laravel,Eloquent,我有最简单的count查询: Client::where('active',1)->count() 该clients表中只有20行,但完成查询需要1秒以上的时间。我已经检查了这一行,并用简单的PDO查询替换了这一行,并且花费了更少的时间(~0.015秒) Elotent在处理相对简单的查询时如此缓慢是否正常?有没有办法使它更有效率?我在谷歌上搜索过,但我能找到的所有信息都是关于优化大数据集查询的 尝试使用来检查您的查询,并检查它是否真的有说服力,因为它会减慢您的执行时间 一个包含20个结果的简单

我有最简单的count查询:
Client::where('active',1)->count()

clients
表中只有20行,但完成查询需要1秒以上的时间。我已经检查了这一行,并用简单的PDO查询替换了这一行,并且花费了更少的时间(~0.015秒)

Elotent在处理相对简单的查询时如此缓慢是否正常?有没有办法使它更有效率?我在谷歌上搜索过,但我能找到的所有信息都是关于优化大数据集查询的

尝试使用来检查您的查询,并检查它是否真的有说服力,因为它会减慢您的执行时间

一个包含20个结果的简单查询不可能花费这么长的时间(您告诉过1s)

Eloquent不是很快,因为您正在使用查询生成器类生成查询,然后在结果可用后,它将生成一组模型

大多数情况下,Eloquent上缓慢的原因是延迟加载的关系、自定义属性或变体,例如:

您的主要查询只有20行。但在此之后,您将调用一个未加载的关系,该关系对主查询的每行都有100个结果。这将是缓慢和低效的

进行查询并附加到结果的自定义属性也会降低速度

如果没有看到一段代码,就很难告诉您是什么原因导致了您的速度缓慢。告诉我,如果你提供一些功能样本,我可以尝试找到原因



编辑:仅供参考,我们的一个应用程序(纯html+laravel)在1秒内呈现了一个包含500个以上结果的列表页面,这不是一个简单的查询。查询计数为25,在没有缓存的情况下,总查询时间为250ms。

您是专门查看查询时间,还是查看整个请求的时间?由于额外的分析,大多数框架在开发/调试模式下处理请求需要更长的时间,而在生产环境中运行时不会发生这种情况。我只测量了查询时间(响应时间是困扰我的原因)。我使用了各种方法和组合——在本地主机和远程服务器上使用调试模式开/关、使用时钟API、使用simple
microtime
、等等。时间上有一些变化,但Eloquent查询和PDO之间的差异总是很大。您能否记录或查看Eloquent正在执行的确切SQL,并验证它是否与您的PDO查询相同?是的,它是相同的查询。