데이터베이스에서 모든 실행을 가져와야하지만이 실행에 오류가 있으면 표시해야합니다.3 테이블을 사용하여 TSQL 쿼리 최적화
3 표 :
- 런은 : 실행 중
- 메시지 처리 된 파일 ID를 포함 : 다음 실행)
- Runfiles 포함 오류, 경고를 포함을 ...
이 쿼리를 더 이상 최적화 할 수 있습니까?
SELECT TOP 1000 runid,
start,
end,
userid,
CASE
WHEN EXISTS(SELECT rf.fk_fileid
FROM runfiles rf
WHERE rf.fk_runid = r.runid
AND EXISTS(SELECT m.messageid
FROM messages m
WHERE m.fk_fileid =
rf.fk_fileid
AND m.fk_statusid = 4))
THEN 1
ELSE 0
END AS ContainsError
FROM runs r
ORDER BY start DESC
테이블 이름에 대해 언급하지 마십시오, 그들은이 질문에 대한 번역되었다.
감사합니다.
실행 계획을보고 적절한 인덱스를 추가하십시오. – Magnus
"최적화 된"이란 의미는 무엇입니까? 성능에 대해 질문하는 경우 쿼리의 실행 계획을 포함해야합니다. 가독성이나 유지 보수성 향상에 대해 질문하는 경우 [코드 검토 사이트] (http://codereview.stackexchange.com/)가 더 나은 곳입니다. – Pondlife
가끔씩 다른 옵션을 비교하면됩니다. 러 파일과 메시지에 대해 왼쪽 조인을 사용해 보셨습니까? – Narnian