Часто нахождение первой Линии Заказа для каждого Заказа
Учитывая таблицу OrderLine ниже:
OrderID OrderLineID
======= ===========
1 1
1 2
2 3
3 4
1 5
3 6
... ...
... ...
221 123 365 282
Каков наиболее эффективный способ найти ПЕРВУЮ ордерную линию для каждого заказа, учитывая, что эта информация требуется время от времени для доступа пользователя?
Это мой SQL, чтобы найти первый OrderLine, но каждый раз он занимает около 3-5 секунд. (около 300 тыс. строк)
SELECT OrderID, MIN(OrderLineID)
FROM OrderLine
GROUP BY OrderID
Это очень дорого повторять каждый раз, когда мне нужно найти первую строку заказа, чтобы соединиться с другой таблицей. Считайте, что изменение структуры таблицы не вариант, какое возможное решение мне нужно, чтобы улучшить это?
1 ответ
Попробуйте добавить индекс по OrderID и OrderLineID.
(Вы говорите, что не можете изменить структуру таблицы. Если вам было разрешено изменить структуру, вы можете добавить флаг, который идентифицирует первую строку каждого заказа, а затем индексировать по этому флагу.)