如何解决在 ROW_NUMBER() OVER ( ORDER BY ) 中使用 case 语句会导致严重的性能问题
在 ROW_NUMBER() OVER (ORDER BY)
中使用 case 语句会导致严重的性能问题。
我有两个查询,第一个在 5 秒内运行,第二个需要几分钟才能运行。我正在尝试使用传递给存储过程的值进行排序。请告诉我如何解决这个问题。
查询 #1:
SELECT TOP (10)
ROW_NUMBER() OVER (ORDER BY POData.PurchaSEOrderNumber) AS ROW_NUM,Received.QuantityReceived,POData.PurchaSEOrderNumber,POData.*
FROM
POData
INNER JOIN
Received ON POData.Id = Received.PODataId
查询 #2:
DECLARE @OrderBy nvarchar(32) = 'PurchaSEOrderNumber'
SELECT TOP(10)
ROW_NUMBER() OVER (ORDER BY
CASE
WHEN @OrderBy = 'PurchaSEOrderNumber'
THEN POData.PurchaSEOrderNumber
END) AS ROW_NUM,POData.*
FROM
POData
INNER JOIN
Received ON POData.Id = Received.PODataId
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。