我有一个非常奇怪的问题,我无法理解。 我在我的后端应用程序中使用 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
问题是,如果我在数据库控制台或 PHPMyAdmin 中运行相同的查询,查询大约需要 20 毫秒。
我不明白这怎么可能,因为我使用相同的数据库、相同的查询、相同的计算机和相同的数据库连接。
可能是什么原因?
最佳答案
PHPMyAdmin 会自动为您添加LIMIT
。
这是因为 PHPMyAdmin 将始终默认为您的查询分页。
在您的 Laravel/Eloquent 查询中,您一次性加载所有 30k 条记录。这一定需要时间。
要解决此问题,请尝试 pagination或 chunking您的查询。
是的,总数会花很长时间,但是 block 本身会非常快。
关于php - Laravel 中的简单查询速度很慢,但在数据库控制台中却非常快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559401/