У меня есть порядок таблиц, который содержит дату заказа.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
(таблица упрощены и показаны только необходимые поля)
Как эффективно выбрать последний заказ для конкретного склада? Я в настоящее время сделать:
SELECT TOP 1 * FROM tblOrder WHERE WarehouseId = 1 ORDER BY OrderDate DESC
Меня беспокоит, когда у меня есть миллион (или больше) заказов на конкретный склад, выполнив сортировку и выберите первую запись, это будет слишком медленно (я думаю?).
Есть ли более эффективный способ выбора последней записи заказа?
Благодаря
Каков ожидаемый результат, если есть связь? (Например, две строки с той же последней датой.) – jarlh
Ваш подход не очень дорог и должен хорошо работать в этом случае, тогда на вашем столе есть индекс (WarehouseID, OrderDate). –
, если вы собираетесь это сделать, вы можете рассмотреть возможность установки индекса в поле orderdate, что ускорит работу (но имейте в виду, что это может повлиять на другие запросы против этой таблицы - это сложная тема, поговорить с DBA!). В противном случае ваш запрос будет прекрасен, если вы не беспокоитесь о идентичных датах, подобных приведенному выше комментатору. – ADyson