4개의 테이블이 있습니다.
테이블명: A_TB, 컬럼 ID, UPDATE_DATE
테이블명: B_TB, 컬럼 ID, UPDATE_DATE
테이블명: C_TB, 컬럼 ID, UPDATE_DATE
테이블명: D_TB, 컬럼 ID, UPDATE_DATE
저 4개의 테이블중 최신 등록된 1개의 데이터를 가지고 오고싶은데요.
예를 들어
1번 변수 4개에 담아서 변수로비교
SELECT TOP 1 변수_1 = UPDATE_DATE FROM A_TB WHERE ID = 1
SELECT TOP 1 변수_2 = UPDATE_DATE FROM B_TB WHERE ID = 1
SELECT TOP 1 변수_3 = UPDATE_DATE FROM C_TB WHERE ID = 1
SELECT TOP 1 변수_4 = UPDATE_DATE FROM D_TB WHERE ID = 1
2번 조인
SELECT TOP 1 *
FROM A_TB
INNER JOIN B_TB
ON A_TB.ID = B_TB.ID
INNER JOIN C_TB
ON B_TB.ID = C_TB.ID
INNER JOIN D_TB
ON C_TB.ID = D_TB.ID
위 2가지 방법이있다고 치면
저는 2번이 SELECT 가 1번이되니깐 성능상으로 좀더 좋지 않을까? 생각하는데요
데이터가 엄청 많이 쌓이고 하면
ID 컬럼에 인덱스가 걸려있어도
JOIN 으로 4개의 테이블을 매치해야하니깐......그래도 2번이 더 빠르다고 생각합니다..-_-;;
제생각이 맞는건가요?
명확하게 설명을 해주실수 있을까요?
Comment 2
-
三流
2015.03.30 16:07
-
우창수_296710
2015.03.30 18:20
음 그런 방법도 좋겠네요..
감사합니다~
제생각에는 걍 간단하게 테이블당 최신 등록된 1건씩 가져와서
총4건중 다시 최신 등록된 1건을 찾는게 빠르지 않을 까요
각테이블에 데이터가 많이 쌓여 있다는가정하에요
(* 테이블 A,B,C,D 의 관계를 명확치 않음)
SELCT TOP 1 AA.컬럼 ID,AA.UPDATE_DATE FROM
(
SELECT TOP 1 컬럼 ID,UPDATE_DATE FROM A_TB ORDER BY UPDATE_DATE DESC
UNION
SELECT TOP 1 컬럼 ID,UPDATE_DATE FROM A_TB ORDER BY UPDATE_DATE DESC
UNION
SELECT TOP 1 컬럼 ID,UPDATE_DATE FROM C_TB ORDER BY UPDATE_DATE DESC
UNION
SELECT TOP 1 컬럼 ID,UPDATE_DATE FROM D_TB ORDER BY UPDATE_DATE DESC
) AA
ORDER BY AA.UPDATE_DATE DESC