在Laravel中,简单查询速度很慢,但是在数据库控制台中却非常快

Zaa*_*aay 5 php database laravel eloquent

我有一个非常奇怪的问题,我无法解决问题。我将Laravel用于后端应用程序,在该应用程序上,我对具有30k条记录并带有正确索引的表运行非常简单的查询。这是查询:

DB::select('select * from Orders where ClientId = ?', [$id])

在Laravel应用程序中,此查询运行1.2秒(如果我使用Eloquent模型,则同样。):

    "query" => "select * from Orders where ClientId = ?"
    "bindings" => array:1 [?
      0 => "44087"
    ]
    "time" => 1015.2
Run Code Online (Sandbox Code Playgroud)

问题是,如果我在数据库控制台或PHPMyAdmin中运行THE SAME查询,则该查询大约需要20毫秒。

我不知道怎么可能,因为我使用的是相同的数据库,相同的查询,相同的计算机和相同的数据库连接。

可能是什么原因?

Una*_*rai 5

PHPMyAdmin 会自动LIMIT为您添加。

这是因为 PHPMyAdmin 将始终默认为您的查询分页。

在您的 Laravel/Eloquent 查询中,您一次性加载了所有 30k 条记录。这必须需要时间。

要解决此问题,请尝试分页分块查询。

总数需要很长时间,是的,但是块本身会很快。


小智 3

我会尝试使用调试栏调试查询,看看需要多长时间,以及哪个需要更长的时间,...它非常易于使用和安装: https: //github.com/barryvdh/laravel-debugbar 我我认为您对数据库管理感兴趣..也请阅读本文,您可以获得一些想法。祝您好运