총 수 = 12 000쿼리 최적화 테이블의 레코드
난 단지 최근에 또는 마지막에 추가 기록 인 10 개 개의 레코드를 필요로하는 쿼리 아래에 있습니다. 따라서 OrderBy desc를 적용하지만 입찰가로 ORDER BY를 사용하여 DESC를 적용하면 쿼리가 중지되고 쿼리가 10 개의 레코드에 대해 15 분의 출력을 반환합니다.
SELECT taking.BId ,taking.calledDate Called,taking.calleduser Caller,taking.callerNotes,taking.Title,
taking.FName,taking.ScName,taking.takingPhase, Training.TName,
taking.TrDate,taking.SubmitDateTime, TrLocation.TrLocation trTrl,
taking.STATUS,taking.DelegNum, taking.Tel, taking.Email,taking.Notes
FROM Taking taking
LEFT JOIN training Training ON taking.Training = Training.TId
LEFT JOIN confirmation ON taking.Bid = confirmation.Bid
LEFT JOIN TrLocation ON taking.TrLocation = TrLocation.TrLId
LEFT JOIN Invoice ON taking.BId =Invoice.BId
LEFT JOIN couriertracking ON taking.BId = couriertracking.bId
LEFT JOIN SalesPerson ON taking.SId = SalesPerson.SId WHERE
taking.SubmitDateTime > DATE_SUB(NOW(), INTERVAL 2 MONTH) AND IFNULL(taking.SId,0) > 0
ORDER BY taking.BId DESC LIMIT 10
입찰 열에서 색인 생성을 시도했지만 여전히 쿼리 시간이 같습니다. 어떻게하면 쿼리를 최적화 할 수 있습니까?
'ORDER BY' 및'LIMIT'을 (를) 제거하면 얼마나 많은 행을 가지며 시간이 얼마나 걸립니까? –
재생 해 주셔서 감사합니다. ORDER BY 및 LIMIT을 (를) 제거한 후 약 11,533 개의 레코드가 반환됩니다. – Aartek
'ORDER BY'와'LIMIT'은 SQL 연산의 마지막 단계 중 하나입니다. 아마도 전체 결과 집합이 처리되고 마지막 명령이 결과 집합을 정렬하고 잘라냅니다. 조인 필드를 인덱싱하십시오. – Parfait