SQL Server 쿼리를보다 효율적으로 만드는 것에 대한 질문이 있습니다.하위 쿼리를 사용하는 쿼리 정리
나는 다음과 같은 열이 나는 값이 0보다 큰 일로부터 각 ID에 대한 행을 선택합니다
ID int
ValueDate datetime
Value float
있는 테이블을 가지고있다. 이것은 내가 가진 SQL이다.
SELECT a.ID, a.ValueDate, a.Value
FROM MyTable a,
(SELECT ID, MIN(ValueDate) as VDate FROM MyTable WHERE Value > 0 GROUP BY ID) B
WHERE a.ID = b.ID and a.ValueDate >= b.VDate
이 작업은 가능하지만 더 효율적인 방법이 있는지 궁금하다. 하나의 테이블을 하위 쿼리로 대체해야하기 때문에 다른 양식을 보는 데 특히 관심이 있습니다. 쿼리가 동일한 하위 쿼리를 두 번 실행하므로 실행 속도가 느려지므로 걱정됩니다. 하위 쿼리가 한 번만 실행되도록 쿼리를 조정할 수 있습니까? 이 쿼리는 Oracle과 Access 데이터베이스에서도 쿼리를 실행해야하기 때문에 다른 두 데이터베이스 시스템에서 대신 사용할 수있는 SQL Server가없는 한 SQL Server는 사용할 수 없습니다.
'ID'는 고유하지 않습니까? 나에게 명확하지 않은 이유는'GROUP'을 사용하는 이유 – anatol
단순히 SELECT a.ID, a.ValueDate, a.Value FRT MyTable a WHERE a.Value> 0'을 사용하지 않는 이유는 무엇입니까? – anatol
anatol --- ID와 날짜 열이 고유 키를 구성합니다. 첫 번째 0이 아닌 값으로 시작하는 데이터를 수집하려고하기 때문에 GROUP BY를 사용하지만 그 다음에 0 값이 있으면 그 값을 유지해야합니다. – user1753352