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

标签 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

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

我不明白这怎么可能,因为我使用相同的数据库、相同的查询、相同的计算机和相同的数据库连接。

可能是什么原因?

最佳答案

PHPMyAdmin 会自动为您添加LIMIT

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

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

要解决此问题,请尝试 paginationchunking您的查询。

是的,总数会花很长时间,但是 block 本身会非常快。

关于php - Laravel 中的简单查询速度很慢,但在数据库控制台中却非常快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559401/

相关文章:

mysql - 数据库结构重新评估

mysql - 更新具有匹配模式的多列的表

php - 统计并检查json查询结果

php - Elasticsearch 查询字符串中的空值

php - 在 MySQL 中使用引号

php - 最近 3 小时内从 mysql 查询结果?

mysql - 带权重参数的空间数据库索引

mysql - 无法在 Laravel 中添加外键

php - 日期时间差异阴性结果?

php - 自动创建用于前端访问的 XML 文件的最佳实践?