0
나는 다음과 같은 두 개의 테이블이 있습니다결합 조회에서 MAX 값을 찾기
표 #USER
SELECT *
INTO #USER
FROM (
SELECT 'A.2017.JAN' AS [KSCEN], 'John' AS [Name], 'Doe' AS [Surname] UNION ALL
SELECT 'A.2017.JAN' AS [KSCEN], 'Paul' AS [Name], 'Red' AS [Surname] UNION ALL
SELECT 'A.2017.FEB' AS [KSCEN], 'John' AS [Name], 'Doe' AS [Surname] UNION ALL
SELECT 'A.2017.FEB' AS [KSCEN], 'Paul' AS [Name], 'Red' AS [Surname] UNION ALL
SELECT 'A.2017.MAR' AS [KSCEN], 'John' AS [Name], 'Doe' AS [Surname] UNION ALL
SELECT 'A.2017.MAR' AS [KSCEN], 'Paul' AS [Name], 'Red' AS [Surname] UNION ALL
SELECT 'A.2017.MAR' AS [KSCEN], 'Kate' AS [Name], 'Blue' AS [Surname]
) A
표 내 목표는 찾을 수 있습니다 #KSCEN
SELECT *
INTO #KSCEN
FROM (
SELECT 'A.2017.JAN' AS [ID], 6 AS [SEQ] UNION ALL
SELECT 'A.2017.FEB' AS [ID], 7 AS [SEQ] UNION ALL
SELECT 'A.2017.MAR' AS [ID], 8 AS [SEQ] UNION ALL
SELECT 'A.2017.APR' AS [ID], 9 AS [SEQ] UNION ALL
SELECT 'A.2017.MAY' AS [ID], 10 AS [SEQ]
) A
테이블 #USER 내에서 적어도 한 번 이상 사용 된 MAX SEQ가있는 #KSCEN의 요소. 나는 다음과 같은 하위 쿼리를 얻고 왼쪽 가입 :
SELECT [ID]
FROM #KSCEN
WHERE [SEQ] = (SELECT MAX(B.[SEQ]) FROM #USER A LEFT JOIN #KSCEN B ON A.[KSCEN]=B.[ID])
이 작동하지만이 시스템으로 쿼리를 해결하기 위해 매우 빠른되지 않도록 해당 테이블 #USER, 내 경우에는, 이상 30,000,000 행이 포함 고려 모든 행을 결합한 다음 MAX를 찾아야합니다.
내 문제를 해결하는 더 효과적인 방법이 있습니까?
최적화 질문이 CodeReview에 속하기 때문에이 질문을 주제와 관련이 없도록 닫으려고합니다. –
@ScottHunter [query-optimization] 태그로 표시된 질문은이 주제에 관한 내용이 많으므로이 사이트에서 이러한 질문에 답변하는 사람들의 존경할만한 의견이 있습니다. –