안녕하세요
데이터 출력하는데서 값을 하나 가지고오는부분이있는데
SELECT
*
FROM A
JOIN B
ON
A.ID = B.ID
위와같이 해도되고
SELECT
A.* , ( SELECT TOP 1 B.PRICE FROM B WHERE B.ID = A.ID)
FROM A
위와깉이 해도 되는데 성능면에서 차이가 있을까요?..
B 테이블에 값을 하나만 등록해야하는데 ID가 여러개가 있을수있어서
실수로 데이터를 여러개 넣을까봐요..
( ID값이 키값이 아닙니다..위에껀 예시에여 )
사소한거긴한데..신경쓰이네요ㅎ ...
Comment 4
-
자리비움
2017.08.09 17:34
-
Sisylian
2017.08.09 18:52
기간지정이 필요한곳이라서 그냥놔두긴했는데..체크를 좀더 넣어두는게 낫겠네요! 감사합니다
-
sp_helpdb
2017.08.09 17:53
인덱스 구조가 어떤지는 모르겠지만, 두 쿼리 실행계획이 어떻게 세워지는지 봐야할 것 같습니다.
JOIN 으로 한 경우 Hash 조인으로 풀리고 서브 쿼리로 한 경우 Loop 조인으로 풀린다면
데이터가 많은 경우 Hash 조인으로 풀린 경우가 대개 더 좋지 않을까 싶습니다.
-
Sisylian
2017.08.09 18:52
감사합니다! 실행계획 한번 확인해보겠습니다!!
A 테이블의 데이터를 1건 조회한다면 직접 실행계획 보시고 판단하시면 될 듯 합니다.
그리고, B 테이블에 데이터가 1건만 들어가야 하는것은 제약조건 등으로 해결하시는게 좋을것 같네요.