Hi all,
I am seeing a significant increase in overall execution time when using Doctrine Paginator (520ms to 735ms) within a ZF2 project. It would be great to hear if there is anything I can do to improve this. I am using ZF 2.1.5 with PHP 5.3.8. - To get comparable results I am using in both cases the same QueryBuilder object. - Once executed through Paginator: $d2_paginator = new \Doctrine\ORM\Tools\Pagination\Paginator($dql); $adapter = new \DoctrineORMModule\Paginator\Adapter\DoctrinePaginator($d2_paginator); $paginator = new \Zend\Paginator\Paginator($adapter); $paginator->setItemCountPerPage(25); $paginator->setCurrentPageNumber(1); - Once executed directly through Doctrine: $qb->setMaxResults(25); $query = $qb->getQuery(); $result = $query->getResult(); So far as I can see in the profiler when using Paginator, the increase results from hydration in Doctrine\ORM\Internal\Hydration\ObjectHydrator->hydrateAllData . I am wondering why this is such a large increase. I guess in both cases hydration time should be nearly equal. I already tried whether it makes a difference when joining all necessary associations within the QueryBuilder object. But this results almost in the same increase $qb = $em->createQueryBuilder(); $qb->select(array('mainTable','e','o', 'feeprices','fee','feegroup','partner', 'partnerFeeprices','partnerFee','partnerFeegroup')); $qb->from($this->getEntityName(),' mainTable','mainTable.id'); $qb->innerJoin('mainTable.event', 'e' , 'WITH', 'e.deleted = 0'); $qb->leftJoin('mainTable.feeprices', 'feeprices' , 'WITH', 'feeprices.deleted = 0 '); $qb->leftJoin('feeprices.fee', 'fee' , 'WITH', 'fee.deleted = 0'); $qb->leftJoin('fee.feegroup', 'feegroup' , 'WITH', 'feegroup.deleted = 0'); $qb->select(array('mainTable','e','o', 'feeprices','fee','feegroup','partner', 'partnerFeeprices','partnerFee','partnerFeegroup')); $qb->leftJoin('mainTable.partner', 'partner' , 'WITH'); $qb->leftJoin('partner.feeprices', 'partnerFeeprices' , 'WITH', 'partnerFeeprices.deleted = 0'); $qb->leftJoin('partnerFeeprices.fee', 'partnerFee' , 'WITH', 'partnerFee.deleted = 0'); $qb->leftJoin('partnerFee.feegroup', 'partnerFeegroup' , 'WITH', 'partnerFeegroup.deleted = 0'); versus $qb = $em->createQueryBuilder(); $qb->select(array('mainTable')); $qb->from($this->getEntityName(),' mainTable','mainTable.id'); Best Regards Christian