,이 기록되었습니다는, SQL의 조건과 속도를 결합
SELECT *
FROM ta A
JOIN tb B
ON A.col1 = B.col1
JOIN tc C
ON B.col2 = C.col2
WHERE B.col3 = 'whatever'
AND C.col4 = 'whatever2'
을 그리고 난 다음에 대해 생각하기 시작했다 :
SELECT *
FROM ta A
JOIN (SELECT * FROM tb WHERE col3 = 'whatever') B
ON A.col1 = B.col1
JOIN (SELECT * FROM tc WHERE col4 = 'whatever2') C
ON B.col2 = C.col2
(I 틀리지 않는 경우 , 결과는 동일합니다). 나는 그것이 훨씬 더 빨라지는지 궁금하다. 내 생각 엔 그럴 것입니다. 그러나 왜/왜 안되는지 알고 싶습니다.
는 (우리 서버가 순간에 아래이기 때문에, 나는 그래서 내가 여기 부탁 해요, 지금 그것을 나 자신을 테스트 할 수 없습니다, 당신이 마음을하지 바랍니다.)
가 (여기서 중요한, 엔진 Vertica,하지만 내 질문은 정말 Vertica에 특정되지 않습니다)
동일합니까? 시도 해봐. 어느 것이 더 빠릅니까? 시도 해봐. 로컬 테스트 서버를 사용하십시오. 넌 없어? 그것을 설정하십시오. –
"오라클"에 대해 같은 질문을하는 것을 기억하고 설명 계획을 확인할 때도 비슷했습니다. 당신은 당신의 DB를 위해 똑같이 시도 할 수 있습니다. – Utsav
귀하의 질문 *은 * 쿼리 * 최적화 방법에 따라 달라 지므로 * 특정 * Vertica 있습니다. 이러한 성능을 처리하는 일반적인 방법은 인덱스, 파티셔닝 및 알고리즘 선택입니다. 일반적으로 우리는 합리적인 결정을 내리기 위해 최적화 프로그램을 사용합니다. –