Doctrine orm 条令2比拉维尔慢得多';他口若悬河

Doctrine orm 条令2比拉维尔慢得多';他口若悬河,doctrine-orm,laravel-5,eloquent,Doctrine Orm,Laravel 5,Eloquent,我试图使用原则2(),而不是雄辩的 执行获取分页数据的简单查询: // Doctrine $orders = $this->orderRepository->paginateAll(50); // Eloquent $orders = $this->orders->paginate(50); 我最终发现条令查询占用了太多时间(来自Laravel Debugbar的信息): 条令查询采用了3.86秒 1.79s 16.63毫秒 SELECT o0_.id AS id_

我试图使用原则2(),而不是雄辩的

执行获取分页数据的简单查询:

// Doctrine
$orders = $this->orderRepository->paginateAll(50);
// Eloquent
$orders = $this->orders->paginate(50);
我最终发现条令查询占用了太多时间(来自Laravel Debugbar的信息):

  • 条令查询采用了
    3.86秒
1.79s

16.63毫秒

SELECT o0_.id AS id_0, o0_.customer_id AS customer_id_1, o0_.customer_ref AS customer_ref_2, ... FROM orders o0_ WHERE o0_.id IN (?)
2.05秒

  • 雄辩的查询花费了
    50.38ms
36.73毫秒

select count(*) as aggregate from `orders`
13.65毫秒

select * from `orders` limit 50 offset 0
我不是在这里粘贴整个条令查询,因为表中有65列,但它们都与“as”一起使用,与前面提到的列相同

这是第2条规则的行为如此缓慢还是我遗漏了什么

我使用注释作为元数据进行映射,并使用
Doctrine\ORM\EntityRepository
访问数据

先谢谢你


致以最诚挚的问候。

Paginatell不是一种条令存储库方法。这是拉维多克特林的一部分。不管出于什么原因,不管是谁写的,对你的特殊情况来说都不是很好。我甚至听不懂你的提问。我一直使用Symfony/doctor进行分页。几乎没有任何开销。除了在他们的github网站上询问之外,不知道该建议什么。谢谢你的评论。我尝试使用默认原则2分页器。数据检索工作非常完美(~7.1ms),甚至比雄辩的模拟更快。但是使用count()方法,我仍然有将近2秒的查询时间。谢谢链接。我甚至不知道那个教义有一个翻页者。我猜这是因为尝试只使用一个查询作为输入。我从分页中编写自定义代码。我有一个SELECT DISTINCT id LIMIT x,它得到了一个所需id的列表,其中考虑了连接以及其他因素。然后使用WHERE IN进行第二次查询,以加载和添加实际实体。对不起,我帮不上什么忙了。
select count(*) as aggregate from `orders`
select * from `orders` limit 50 offset 0