为什么在View中添加ROW_NUMBER需要花费太多时间来执行?

use*_*567 2 sql t-sql sql-server

如果我在View中使用NewID则需要1毫秒,

ALTER VIEW [dbo].[d] 
AS 

  SELECT 
        NEWID() AS Id,
       p.XX
      ,p.xx

  FROM [view_XXX] as P
GO

select * .view_d where code='xxxx' 
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用ROW_NUMBER,它将花费太多时间来完成,

ALTER VIEW [dbo].[d] 
AS 

  SELECT 
        Row_number()OVER(ORDER BY T.XXXXXX)  AS Id,
       p.XX
      ,p.xx

  FROM [view_XXX] as P
GO

select * .view_d where code='xxxx' 
Run Code Online (Sandbox Code Playgroud)

小智 5

我认为, NEWID()总是创建任何随机数作为ID(不需要任何计算)但是如果ROW_NUMBER()SQL需要订购列,那么提供ID.

因为ROW_NUMBER()NEWID()SQL服务器更复杂,需要更多时间来处理它.