메인테이블 가 (a,b,c) : 데이터 로우가 만개이상
서브테이블 나 (x,y,z) : 데이터가 적다
-1) select a,b,(select x from 나 where y = 가.c) from 가
-2) select a,b,나.x from 가,나 where 가.c = 나.y
어떤 방법이 더 속도가 빠를까요?
고수님들의 조언 바랍니다~ 꾸벅~
Comment 4
-
Terry
2015.03.30 11:36
-
neiyan
2015.03.30 12:12
감사감사 님이 빠르다고 하면 빠른거죠..ㅋㅋ
-
초짜해커
2015.03.30 12:27
몇가지 이유로 2번을 권장하고 싶은데요.
일단 2번 쿼리가 훨씬 간단하네요.
그리고 SQL SERVER는 필요에 따라 쿼리를 바꿔버립니다.
그래서 이정도 쿼리는 플랜을 비교해보면 같은 경우가 많아요.
결국 속도도 같을거라는 말이죠.
그리고 한가지 더 첨언하자면
조인을 ANSI 방식으로 하시는걸 추천합니다.
음... 왜냐하면... 음... 표준이니까 -_-;;
FROM 가 INNER JOIN 나 ON 가.C = 나.Y
-
건우아빠
2015.03.30 15:15
조인해서 결과를 집계하는것보다 집계를 내고 결과를 가지고 서브쿼리를 날리는게 더 효과적일때도 있습니다.
만건이면 큰 차이가 없겠지만 건수가 100만건을 조인하고 집계해서 몇백건나온다면 집계해서 몇백건 서브쿼리 날리는게 더 빠르지 않을까 생각 됩니다.
상황에 따라 적절히 이용하시는게 좋습니다.
무조건적인 성능이 조인지 좋고 서브쿼리는 나쁘다로 귀결되어서는 안될듯 합니다.
2) 번이 빠릅니다.
1) 번의 경우 서브쿼리니
속도가 느리구요..
쿼리플랜??(옵티마이저?)
에 의해 그렇다고 알고 있구요..
저도 하수라 -_-;;;
자세한 기술적 요인이나 그런 부분은
다른 고수분들께 패스하겠습니다!!