2016-05-20 3 views
0

У меня есть следующий запрос, который возвращает более 20 секунд (20138 мс) для возврата результатов.Присоединение таблиц занимает очень долгое время symfony 2.7

$locale = 'en'; // test 

$query = $this->getEntityManager()->createQuery(' 
     SELECT 
     product.id, product.productnr, ProductGrp.productgrp' . $locale . ', Criteria.criteria'.$locale.' 
     FROM 
      Productbundle:product product 
     JOIN 
      Productbundle:Criteria Criteria WITH Criteria.criteriaid = product.criteriaid 
     JOIN 
      Productbundle:ProductGrp ProductGrp WITH ProductGrp.partgrpid = product.partgrpid 
     WHERE 
      product.productnr =:productnr 
     ') 
     ->setMaxResults(1) 
     ->setParameter('productnr', $productnr) 
     ->getResult(); 

, когда я запускал запрос от «работоспособный запроса» потребовалось около 20 секунд (20.7809) в PHPMyAdmin.

работоспособной запрос:

SELECT o0_.id AS id0, o0_.productnr AS productnr1, o1_.productgrpen AS productgrpen2, o2_.criteriaen AS criteriaen3 
FROM product o0_ 
INNER JOIN Criteria o2_ ON (o2_.criteriaid = o0_.criteriaid) 
INNER JOIN ProductGrp o1_ ON (o1_.partgrpid = o0_.partgrpid) 
WHERE o0_.productnr = 'ABC1234' 
LIMIT 1; 

Однако, когда я побежал следующий код в PHPMyAdmin занимает менее 2seconds вернуть результаты

SELECT product.id, product.productnr,ProductGrp.productgrpen ,Criteria.criteriaen 
FROM `product` 
INNER JOIN ProductGrp ON ProductGrp.partgrpid = product.partgrpid 
INNER JOIN Criteria ON Criteria.criteriaid = product.criteriaid 
Where productnr = 'ABC1234' 
LIMIT 1 

размер таблицы

------------------------------- 
|Product | over 5mill rows | 
------------------------------- 
|ProductGrp | over 200 rows | 
------------------------------- 
|Criteria | over 600 rows | 
------------------------------- 

Symfony версия : 2,7

+0

Вы можете [EXPLAIN] (http://dev.mysql.com/doc/refman/5.7/en/explain.html) оба запроса и поделиться с нами результатом? – xabbuh

+0

Также попробуйте запустить phpadmin с помощью SQL_NO_CACHE (http://dev.mysql.com/doc/refman/5.7/en/query-cache-in-select.html) – ScayTrase

ответ

0

Индексы хотя нет в списке, я хотел бы предложить следующее

table  indexed on 
Product (productnr, id, criteriaid, partgrpid) 
Criteria (criteriaid) -- would expect as primary key 
ProductGrp (partgrpid) -- also would expect 

Кроме того, сколько «локаль» строка столбцы версии у вас есть/поддержка.