相关疑难解决方法(0)

找到与Min/Max关联的行,没有内部循环

我有一个与T-SQL和SQL Server有关的问题.

假设我有一个包含2列的表订单:

  • ProductId int
  • CustomerId int
  • 日期日期时间

我想要每个产品的第一个订单的日期,所以我执行这种类型的查询:

SELECT ProductId, MIN(Date) AS FirstOrder 
FROM Orders
GROUP BY ProductId
Run Code Online (Sandbox Code Playgroud)

我有一个索引ProductId,包括列CustomerIdDate加速查询(IX_Orders).查询计划看起来像是非聚集索引扫描IX_Orders,后面是流聚合(由于索引没有排序).

现在我的问题是我还要检索CustomerId与每个产品的第一个订单相关联的产品(产品26在25日星期二首次订购,由客户12订购).棘手的部分是我不希望在执行计划中有任何内部循环,因为这意味着ProductId表中的每个额外读取,这是非常低效的.

这应该可以使用相同的非聚集索引扫描,然后是流聚合,但是我似乎无法找到可以执行此操作的查询.任何的想法?

谢谢

sql t-sql sql-server

11
推荐指数
1
解决办法
5274
查看次数

标签 统计

sql ×1

sql-server ×1

t-sql ×1