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

Reply via email to