2017-12-29 7 views
-1

내 쿼리를 최적화하려고합니다.내 쿼리 최적화 symtony

그것은 내가 120 개, 000 개 이상의 데이터를

:-(결과를 얻기 위해 50 개 이상의 secondes을, 느린 정말 걸릴. 여기

내 쿼리입니다

$q = $this->_em->createQuery("SELECT c FROM AppBundle:Cabinne c JOIN AppBundle:Rdv r WITH c.id NOT 
    IN (SELECT us.id FROM AppBundle:Rdv rv JOIN rv.cabinne_id us JOIN us.centre cee 
    WHERE (rv.dateRdv >= :start AND rv.dateRdv < :enddate AND rv.etat = :etat) 
    OR (rv.dateRdv <= :start AND rv.DateFin > :start AND rv.etat = :etat) 
    OR (rv.dateRdv < :start AND rv.DateFin > :enddate AND rv.etat = :etat) AND cee.id = :id) JOIN c.centre ceee WHERE ceee.id = :id "); 


    $q->setParameter('start', $start); 
    $q->setParameter('enddate', $end); 
    $q->setParameter('etat', 1); 
    $q->setParameter('id', $id); 

수 누군가가 도와주세요 감사합니다

답변

0

쉬운 대답 : 첫 번째 10 resutls을 붙이십시오.


그렇지 않으면 백그라운드 처리에서이 작업을 수행하기를 바랍니다. 그렇지 않으면 쿼리 대신 최적화 할 다른 것이 있습니다.

1)이 코드가 쿼리를 실행하지 않을 때 ~ 2ms를 매우 빠르게 실행한다고 확신합니다. 제발 전체 코드를 추가하십시오.

2) symfony 프로파일 러 또는 mysql 로그 저속 쿼리를 사용하여 생성 된 쿼리를 확인 했습니까? 독트린없이 쿼리를 실행하는 데 얼마나 걸립니까? SQL (DQL 아님) 앞에 RDMS 실행 계획 추가 설명이 있습니까?

3) 아마도 가장 중요한 문제는 교리 수화기의 데이터를 처리하는 방법 일 것입니다. xdebug 프로파일 링을 통해 수화기에서 얼마나 많은 시간을 소비하는지 확인하십시오. 수화기가 검색어를 늦추는 이유는 무엇입니까?


문제가 쿼리 시간 인 경우. 데이터베이스 뷰와 일부 인덱스를 만들어야 할 수도 있습니다. RDMS 실행 계획은 어디에 문제가 있는지 보여줍니다.

문제가 하이드 레이터에 있으면 반복기를 반환하고 온 디맨드 하이드레이트 화기로 결과를 반복 할 수 있습니다.