经常为每个订单找到第一个OrderLine

时间:2013-07-16 14:11:20

标签: sql firebird2.1

鉴于下面的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

当我需要找到第一个与另一个表连接的订单行时,每次重复此操作非常昂贵。考虑到更改表结构不是一个选项,我有什么可能的解决方案来改进它?

1 个答案:

答案 0 :(得分:0)

尝试按OrderID和OrderLineID添加索引。

(你说你不能改变表结构。如果你被允许改变结构,你可以添加一个标识每个订单第一行的标志,然后按该标志索引。)