需要优化查询以在索引视图中使用

时间:2016-03-13 04:54:13

标签: sql indexing view sql-server-2008-r2

我在视图中有这个查询,因为引用的表t我无法索引。我已经转换为一个不起作用的子查询,无论如何都是一个较慢的smidgen。

我只需要买一个productid的最后价格。

SELECT op.productId, op.Price, o.createdat
from (
    SELECT max(op.OrderProductid), MAX(o.OrderId)
    FROM dbo.OrderProduct op
    INNER JOIN dbo.Order so ON op.OrderId = so.OrderId 
    WHERE o.StatusId IN (1,2,3)
    GROUP BY op.ProductId
) t
join OrderProduct op on op.Productid = t.Productid
join Order o ON o.OrderId = op.OrderId

1 个答案:

答案 0 :(得分:1)

考虑你的上一次陈述:

  

我只需要买一个productid的最后价格。

您可以使用row_number

select *
from (
    select op.productid, op.price, o.createdat,
        row_number() over (partition by op.productid order by o.orderid desc) rn
    from orderproduct op 
        join order o on op.orderid = o.orderid
) t
where rn = 1
相关问题