gpt4 book ai didi

php - Doctrine 2 getResult() 需要很多时间

转载 作者:可可西里 更新时间:2023-11-01 07:58:52 25 4
gpt4 key购买 nike

我使用 doctrine 2 开发 symfony 2 应用程序。我的代码是:

$userSites = $this->getDoctrine()->getManager()
->createQuery('SELECT us, s FROM MyMainBundle:UserSite us JOIN us.site s WHERE us.user = :user_id')
->setParameter('user_id', $user_id)
->getResult();

它通常返回大约 7000 多条记录。当我将此查询直接传递给 mysql(使用 getSql() 并粘贴到 phpmyadmin)时,它需要 0,008 秒。但是 getResult() 大约需要 20-30 秒。 :( 为什么?我可以加快速度吗?

最佳答案

您确定 phpmyadmin 会在没有 LIMIT 的情况下进行查询吗?默认情况下,它会添加 LIMIT 0、30 或类似的内容,并进行分页。我会说 20-30 秒是正常的,如果你在本地机器上工作,在共享主机服务器或 VPS 上,它应该加载快几倍,因为它们使用缓存,比如 apc。

在现实世界中,您永远不应该进行会返回那么多结果的查询。您应该研究批处理原则。这就是我使用的并且效果很好。基本上你会在循环中进行更多“更小”的查询。如果您需要如何执行此操作的示例,我可以为您提供代码示例。

此外,当您进行复杂的查询并且时间很重要时,请尝试使用 DBAL(数据库抽象层),以避免使用复杂的对象进行查询。

关于php - Doctrine 2 getResult() 需要很多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23503125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com