주문 날짜가 포함 된 테이블 주문이 있습니다.SQL : 효율적으로 마지막 레코드를 얻으십시오.
WarehouseId | OrderId | ItemId | OrderDate
-------------------------------------------
1 | 1 | 1 | 2016-08-01
1 | 2 | 2 | 2016-08-02
1 | 3 | 5 | 2016-08-10
2 | 1 | 1 | 2016-08-05
3 | 1 | 6 | 2016-08-06
(테이블이 단순화되고에만 표시 필수 항목)
어떻게 효율적으로 특정 창고의 마지막 순서를 선택? 나는 현재 나는 할 : I 정렬 수행하여, 특정웨어 하우스 만 (또는 그 이상)의 주문을 가지고 있고, 너무 느린 것 첫 번째 레코드를 선택하면
SELECT TOP 1 * FROM tblOrder WHERE WarehouseId = 1 ORDER BY OrderDate DESC
내 관심사이다 (I 생각?).
마지막 주문 레코드를 선택하는 더 효율적인 방법이 있습니까? 당신이 그것에 많이려고하는 경우에
감사
동점 일 경우 예상되는 결과는 무엇입니까? (즉 마지막 두 날짜가 같은 두 행.) – jarlh
당신의 접근 방식은 매우 비싸지 않고 테이블에 인덱스 (WarehouseID, OrderDate)가있는 경우 잘 작동해야합니다. –
많은 일을하는 경우 orderdate 필드에 인덱스를 설정하면 작업 속도가 빨라집니다 (하지만이 테이블에 대한 다른 쿼리에 영향을 줄 수 있음을 알고 있어야합니다. 복잡한 주제이므로 DBA!). 그렇지 않으면 위 쿼리 작성자가 같은 날짜에 대해 걱정하지 않는 한 쿼리가 괜찮습니다. – ADyson