Mysql
使用多個觸發器是否正常?
我在整個數據庫中有許多所謂的匯總列來計算其他表中的行數。例如,計算使用者的評論數(使用者表中的一列)。目前,我通過一個額外的查詢來更新此列:
UPDATE user_table SET comments = comments + 1 WHERE user_id='x'
現在我想介紹
Triggers
我的數據庫而不是執行第二個查詢。每列兩個Triggers
:一個 DELETE 和一個 INSERT。然後,我將有 30 - 40Triggers
!基準測試表明,使用
Triggers
比執行第二個查詢快約 50%。顯然,使用 mysql 的現代特性是合理的。但是,我問這個問題的原因是許多程序員強烈反對Triggers
,因為它使編碼變得模糊。此外,添加很多Triggers
可能會造成Information_Schema
混亂。我在正確的軌道上嗎?
觸發器的主要問題是:
a) 它們很難調試
b)觸發器級聯對您的數據庫可能是致命的 - 例如,如果您在一個表中有一個更新後觸發器,它更新另一個表,該表也有一個更新後觸發器,那麼您將遇到很多問題
幾個問題:
a) 在您的應用程序中使用“計算”摘要的頻率如何?
b) “計算”摘要需要多久更新一次?
c) 您是否考慮創建一個“報告”表,該表會定期更新您需要的主要“計算”?