Query Optimize ( Where절 순서, join 순서 )

쿼리를 작성하다보면 막연한 의문이 든다..

Where 조건을 작성하는 순서에 따라 성능에 영향을 미칠까?
혹은 INNER JOIN 순서가 성능에 영향을 줄까?

결론은 NO! 쿼리최적화 과정에서 순서를 맞춘다.

SELECT *  
FROM member m  
WHERE m.age <> 0  
and (100/m.age > 0)

SELECT *  
FROM member m  
WHERE (100/m.age > 0)  
and m.age <> 0  

where절 순서는 query optimizer가 적절히 변경해준다.
0으로 나누어 에러를 발생하는 경우를 발생시켜도
알아서 쿼리 순서를 최적화 시켜 실행시켜준다!

SELECT *  
FROM member as m  
INNER JOIN organization as o  
ON m.organizationID = o.organizationID  
WHERE m.orgainzationID = 10

SELECT *  
FROM organization as o  
INNER JOIN member as m  
ON o.organizationID = m.organizationID  
WHERE o.orgainzationID = 10

INNER JOIN에서도 성능에 영향을 미치진 않는다!
쿼리 최적화가 조인 순서를 알아서 맞춰 준다.
(A_B)*C = A_(B*C) 결과가 같다는 집합의 영역으로 설명이 가능하다!

물론!
OUTER JOIN의 경우에는 쿼리 성능에 영향을 미칠수 있다!!

'DB' 카테고리의 다른 글

[noSql]Redis  (0) 2020.07.30
[DB] Lock  (0) 2020.07.29
인덱스란?  (0) 2020.07.29

댓글

Designed by JB FACTORY