2016-06-16 3 views
0

이 쿼리에서 더 나은 실행 및 가져 오기 시간을 찾고 재 작성 제안에 감사드립니다. 감사합니다학교용 Mysql의 SQL 문

SELECT * 
    FROM job.FilledApplication FA 
    JOIN job.InterviewedCandidatelist ICL ON ICL.FilledApplicationDate =FA.Date  
    JOIN job.SelectedCandidate SC ON ILC.ID = SC.InterviewedCandidateid 
Where FA.Date > 12458756236442 
ORDER BY FA.Date DESC LIMIT 100000; 
+1

, 열을 – Sami

답변

0

당신이 단지와 조건을 가지고있는 시간> 또는 < 당신이 (당신이 필드에 인덱스를 가지고 가정) 범위 스캔을 사용합니다. 경우에 따라 필드에서 가장 큰 값으로 범위를 제한하여 옵티마이 저가 스캔 실행 방법을 더 잘 알고있는 경우도 있습니다.

SELECT * 
    FROM job.FilledApplication FA 
    JOIN job.InterviewedCandidatelist ICL ON ICL.FilledApplicationDate =FA.Date  
    JOIN job.SelectedCandidate SC ON ILC.ID = SC.InterviewedCandidateid 
Where FA.Date > 12458756236442 AND FA.Date <= (12458756236442+100000) 
ORDER BY FA.Date DESC LIMIT 100000; 

그래서 당신이 데이터를 알고에 대해 생각하고, 그 적용 예를 들어, 당신은 당신이 당신의 쿼리에서이 정보를 사용할 수있는 연속적인 범위 또한 의해 다음과 같이이 알고있는 경우. 항상

그리고 색인을보고 더 나은 대신 SELECT *의

+0

을 언급 (조건, 조건에 의해 조건이나 순서로 옵션 그룹 가입 조건에) 쿼리가 수행하는 적절한 사람을 돌볼 명백한 조인 문제 외에도 네이티브 ndb 엔진보다 Innodb 엔진에서 더 나은 이유는 쿼리가 동일한 동일한 행 수에 대해 10000 % 더 빠름을 알 수 없다는 것입니다. – Russia

+0

내 대답의 쿼리 또는 두 쿼리의 의미입니까? 시나리오? 당신이 당신의 쿼리를 의미한다면, 두 시나리오 모두에서 저의 시도를 시도하십시오 : 상한선 (이상하게 보일지도 모릅니다)은 당신에게 더 나은 계획을 줄 수있는 대부분의 쿼리 최적화 프로그램에 대한 더 나은 처리를 제공합니다. 동일/유사한 성능을 얻는 또 다른 방법은 다음과 같습니다. 히스토그램 정보를 최신 상태로 유지하고 최적화 프로그램에서 쿼리 계획을 결정하는 데 사용할 수있는 시간 조정 (마지막으로 프로덕션 용도로 유용하지는 않지만 근본 원인을 알려주세요) –