에서 한 행을 얻기 위해 내가 가지고있는 다음과 같은 두 가지 (간체) 테이블 및 열 :보다 효율적인 방법은 조인 된 테이블
표 1 : 코스 열 : CourseVersion 열 :
표 2 CourseID CourseVersionID, CourseID, Active, UpdateDate, Field1, Field2 ... 등
각 Course 행에 대해 최신 활성 CourseVersion 행을 가져오고 싶습니다. (CourseVersion 행이없는 경우 행 없음). 최신 UpdateDate는 최신 CourseVersionID가 아닐 수 있습니다.
SELECT cv.* FROM Course AS c
CROSS APPLY(SELECT TOP 1 CourseVersion.* FROM CourseVersion
WHERE CourseVersion.CourseID = c.CourseID AND CourseVersion.Active = 1
ORDER BY CourseVersion.UpdateDate DESC) AS cv
이 충분히 잘 작동하지만 느린 :
은 현재이 같은 쿼리가 있습니다.더 효율적으로 만드는 방법에 대한 일반적인 제안은 무엇입니까?
NB. 각 코스의 최신 버전에 대해 필요한 정보가 무엇인지에 따라 SQL 서버 2012
SQL 서버의 버전은 무엇? 최신 버전에는 사용할 수있는 윈도우 기능이 있습니다. 쿼리 계획은 어떻게 생겼습니까? CTRL-L을 누르면 쿼리 계획이 표시되고 인덱스가 제안됩니다. –
SQL Server 2012. 감사. – johna