gpt4 book ai didi

php - Doctrine 2.1 性能问题

转载 作者:行者123 更新时间:2023-11-29 18:03:59 24 4
gpt4 key购买 nike

最近我遇到了 Doctrine 2.1 性能问题。在我的请求中,我有很多“LEFT JOINS”、“WHERE”和“WHERE IN”子句,我需要总数+基于限制和偏移的特定记录集。首先, Doctrine 2.1不支持MySQL选项Limit。我尝试将 Limit 附加到查询中,但每次我收到“错误预期字符串结尾得到'limit'”。我尝试使用

$queryBuilder
->setMaxResults(25)
->setFirstResult(10);

正如许多文章中所建议的那样,但正如文档 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#first-and-max-result-items-dql-query-only 中所说的那样

If your query contains a fetch-joined collection specifying the result limit methods are not working as you would expect.

这意味着,如果您预计每页有 25 行,则可以得到例如 18 行。Doctine 2.1 默认没有像 Doctine 2.2 那样的分页器,所以大家建议使用 Doctine 扩展 https://github.com/wiredmedia/doctrine-extensions/blob/master/lib/DoctrineExtensions/Paginate/Paginate.php ,但它也很蹩脚并降低了性能。据我了解,它发送了 2 个请求:第一个请求获取所有日期,没有限制和偏移量来计算总计数,第二个请求是带有特定实体 ID 的“WHERE IN”请求。对我来说太慢了。所以你可能想知道我的解决方案是什么:

$data = $oQuery->getArrayResult();
return array(
'data' => array_slice($data, $iStart, $iLimit),
'count' => count($data)
);

如果您有更好更快的解决方案,请与我分享。

最佳答案

虽然问题中没有您的查询,但您只有两个选择:使用带有所有必要 LIMIT 的原始 SQL 或升级 Doctrine 版本。

关于php - Doctrine 2.1 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48080274/

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