1

我正在使用 2 类数据保险库,目前正在开发一个功能,以尝试模拟数据立方体,以便某些用户从特定快照中快速提取数据。

目前,我可以通过转换连接(或 where 子句)上的参数来修改代码以使其工作,但这会导致 100,000 条记录的性能降低 3 秒。

对于性能是否可以执行

set @AsAt = dbo.AdjustLocalToUtc(@AsAt)

在 return 语句之前的某个地方,或者在一开始的时候。

代码块 - 如果 UTC 值通过则工作

ALTER FUNCTION dbo.fn_Ticket_AsAt
(
    @AsAt datetime      --Local Time for User Confort
)
RETURNS TABLE 
AS 
RETURN
(
    Select * 
    from dvr.hub_ticket hub
    join dvr.sat_ticket sat
        on hub.hub_ticket_sk = sat.hub_ticket_sk
            and @AsAt between sat.load_datetime and coalesce(sat.load_end_datetime,getutcdate())
                --Load_datetime and load_end_datetime are UTC values 
)

什么是所需的查询形式,因为转换只需要执行一次,而不是针对每条记录。

ALTER FUNCTION dbo.fn_Ticket_AsAt
(
    @AsAt datetime      --Local Time for User Confort
,   declare @dv datetime = dbo.AdjustLocaltoUtc(@AsAt)

)
RETURNS TABLE 
AS 
RETURN
(
    Select * 
    from dvr.hub_ticket hub
    join dvr.sat_ticket sat
        on hub.hub_ticket_sk = sat.hub_ticket_sk
            and @dv between sat.load_datetime and coalesce(sat.load_end_datetime,getutcdate())
                --Load_datetime and load_end_datetime are UTC values 
)
4

0 回答 0