2016-07-21 2 views
0

나는 laravel을 처음 사용하고 있으며, 내 쿼리가 실행하기에 너무 오래 걸리므로 뭔가 잘못하고 있는지 확실하지 않습니다.Laravel 5 정말 느린 검색어

저는 약 35000 개의 레코드가 있습니다. 페이지를로드하는 데 약 23 초 걸리는 쿼리의 예를 아래에서 확인하십시오 (아래 스크린 샷 링크 참조).

Screenshot

사람은 내 실수 나 내 DB를 조회 할 수있는 더 좋은 방법에 대해 조언 할 수 있습니다. 나는 Eloquent와 DB :: Query보다 느린 몇 ms를 시도했다.

$data3 = DB::table('toutcome') 

      ->where('CompletedDate', '>=', \Carbon\Carbon::now()->startOfMonth()) 
      ->join('tapplicant', 'tapplicant.AppID', '=', 'toutcome.AppID') 
      ->select(DB::raw('DATE_FORMAT(CompletedDate, "%d %M %Y") as CompletedDate, 
           SUM(AffID = "MW0050") as leadccount50, 
           SUM(AffID = "MW0051") as leadccount51, tapplicant.AppReference')) 
      ->groupBy(DB::raw('DATE_FORMAT(CompletedDate, "%d %M %Y")')) 
      ->get(); 
+0

당신은 mysql 쿼리 캐시의 개념을 알고 계십니까? 그것을 구현하려고합니다. 처음에는 실행하는 데 시간이 걸리지 만 다음에 동일한 쿼리를 호출하면 약 3 배 빠르게 실행됩니다 –

답변

0

처음에는 정말 길다.

검색어가 매우 자세하게 표시되지만 1 분 이상 소요되지 않습니다.

웅변을 사용해 볼 수도 있지만 원시 쿼리보다 조금 더 빠릅니다. 당신은 언급하지 않았다

상황은 다음과 같습니다

이 로컬 서버 또는 원격 서버인가? 원격 서버를 사용하는 경우, 내 솔루션은 mysqld의 my.ini/my.cnf에서 "skip-name-resolve"를 사용하고 key_buffer_size를 업데이트하는 것입니다.

이렇게해도 속도가 향상되지 않으면 해당 서버에 대한 리소스를 살펴보십시오.

0

원시 쿼리를 데이터베이스에서 직접 테스트 했습니까? 쿼리가 느리면 거기에 EXPLAIN을 사용하여 인덱스를 추가 할 위치와 다시 쓸 위치를 찾을 수 있습니다. 당신의 테이블이 내 첫 번째 추측을 어떻게 보는지 알지 못한다면, 경기 침체가 부분적으로 그룹과 관련된다는 것입니다.