假设我有一个表Table1
,其中包含一列cardinal
,可以跟踪其他一些表的COUNT()
。当我删除说Table2
中的一行时,我需要减少cardinal
列中的相应值。
有两种解决方案:
1 - 每次删除条目后都会使用更新。
2 - 创建执行作业的触发器
考虑到性能和最佳实践,哪一个更好? 还有其他更好的解决方案吗?
上下文:我有一个表forums
,可以跟踪每个论坛中的帖子数量。每次删除帖子时我都需要减少这个数字。
答案 0 :(得分:1)
计划A(例如,数百万件事情需要计算):当您需要时,只需COUNT(*)
。
B计划:TRIGGER
可行。
计划C(非常大的情况):不要实时计算;定期总结;然后SUM()
汇总表以获得最后一小时(或其他)的计数。
计划D(如果C不够好):执行C,并使用A增加未计算的计数。
请记住......对于非常频繁的计数和非常频繁的计数请求,执行计数的开销可能会影响系统,从而导致严重关注。