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