У меня есть следующий запрос, который возвращает более 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
Вы можете [EXPLAIN] (http://dev.mysql.com/doc/refman/5.7/en/explain.html) оба запроса и поделиться с нами результатом? – xabbuh
Также попробуйте запустить phpadmin с помощью SQL_NO_CACHE (http://dev.mysql.com/doc/refman/5.7/en/query-cache-in-select.html) – ScayTrase