鉴于下面的OrderLine表:
OrderID OrderLineID
======= ===========
1 1
1 2
2 3
3 4
1 5
3 6
... ...
... ...
221 123 365 282
为每个订单找到FIRST OrderLine的最有效方法是什么,因为这些信息需要用户随时访问?
这是我找到第一个OrderLine的SQL,但每次执行大约需要3~5秒。 (约300k行)
SELECT OrderID, MIN(OrderLineID)
FROM OrderLine
GROUP BY OrderID
当我需要找到第一个与另一个表连接的订单行时,每次重复此操作非常昂贵。考虑到更改表结构不是一个选项,我有什么可能的解决方案来改进它?
答案 0 :(得分:0)
尝试按OrderID和OrderLineID添加索引。
(你说你不能改变表结构。如果你被允许改变结构,你可以添加一个标识每个订单第一行的标志,然后按该标志索引。)