SQL Server: одно обновление нескольких свойств - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь оптимизировать некоторые из них, если мои функции 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 на основе параметра, вопрос заключается в том, можно ли будет возвращать только те записи, которые были изменены, и было бы большеисполнитель?

Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...