SQL Server:一次更新多个属性

时间:2019-06-19 12:01:28

标签: sql sql-server

我正在尝试优化一些SQL函数,并想知道是否可以在性能更高的查询中启用它。

DECLARE @SPAN INT;
SET @SPAN = 1;

BEGIN TRANSACTION;  
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

UPDATE UserSession 
SET PauseSpan = PauseSpan + @SPAN,
    PauseSpanTotal = PauseSpanTotal + @SPAN  
WHERE State & 8 = 8;

UPDATE UserSession 
SET Span = Span + @SPAN
WHERE State & 1 = 1;

UPDATE UserSession 
SET PendSpan = PendSpan + @SPAN,
    PendSpanTotal = PendSpan + @SPAN
WHERE State & 4 = 4 ;   

SELECT 
    UserSessionId AS Id, UserId, HostId, State, Span,
    BilledSpan, PendTime, PendSpan, EndTime, CreatedById, CreatedTime,
    Slot, PendSpanTotal, PauseSpan, PauseSpanTotal 
FROM 
    UserSession 
WHERE 
    State & 1 =1;

COMMIT;  

该函数具有一个INT跨度值,而我试图做的是根据当前实体状态更新一组不同的属性。

该函数几乎每秒被调用一次,需要更新的记录可能介于一到数千条之间,因此,由于我处于可序列化锁定之下,因此我希望使其性能尽可能提高。

还在查询的最后,我根据参数执行SELECT,问题是是否可以仅返回已修改的记录,并且性能更高?

有什么建议吗?

0 个答案:

没有答案