【发布时间】:2014-01-04 20:10:30
【问题描述】:
假设我在 MySQL/InnoDB 上有一个包含 100 万用户的 users 表:
用户
- userId(主键,整数)
- 状态(整数)
- 更多数据
如果我想准确计算status = 1(表示激活帐户)的用户数量,那么大桌子的方法是什么,我的想法是:
用户数
- 状态
- 计数
然后在users 上运行TRIGGER AFTER INSERT 以更新usercounts 中的相应列
这是最好的方法吗?
ps。一个额外的小问题:因为当status 更改时,您还需要在users 上使用TRIGGER AFTER UPDATE,因此是否有可用的语法:
- 涵盖
status上的TRIGGER AFTER INSERT和TRIGGER AFTER UPDATE? - 如果
count已经存在,则将count加一,否则插入新的(status, count = 0)对?
【问题讨论】:
-
在
users表中插入/更新行的频率如何?状态的有效值是什么?只有0和1还是有其他的? -
@peterm 这只是一个概念性的例子,但一个例子可以是状态:1 = ok,2 = deleted,3 = 禁止。并且插入只会偶尔发生一次,但是更新会发生很多,但不会发生在
status字段本身。
标签: mysql sql performance triggers innodb