Лучшая практика для использования таких функций, как сумма внутри триггера? - PullRequest
0 голосов
/ 22 февраля 2019

Я создаю триггер в моей базе данных после вставки.ниже мой код

CREATE TRIGGER updateBalance
    After insert ON wallets
    for each row 
    Begin
        INSERT INTO userbalances (UserId, Balance) VALUES (New.UserId, (Select Sum(Amount) From wallets Where wallets.UserId = New.UserId))
        ON DUPLICATE KEY UPDATE TotalBalance=VALUES(TotalBalance);
    END

Поскольку моя таблица wallets содержит много записей, и в нее часто вставляются новые данные.Является ли вышеуказанный подход эффективным и хорошим методом?

Вот мой другой подход

CREATE TRIGGER updateBalance
    After insert ON wallets
    for each row 
    Begin
        INSERT INTO userbalances (UserId, Balance) VALUES (New.UserId, New.Amount)
        ON DUPLICATE KEY UPDATE TotalBalance=TotalBalance + VALUES(TotalBalance);
    END

Первый подход - использование агрегатной функции, а другой - простое обновление.Что лучше с точки зрения производительности.

PS

Могут быть некоторые синтаксические ошибки, но моя главная цель - найти лучший запрос.

Спасибо

...