我有MySQL数据库,包含13个表。一个表交易将来会存储大量数据(近一百万条记录)。该表使用InnoDB存储引擎。因此,业务规则要求知道此表中所有记录的数量。所以,我的问题是,计算所有这些记录的更快方法是什么?
第一
当然我可以使用类似的东西:
SELECT COUNT(*) FROM transaction
但显然这不是最佳解决方案。
第二
我可以创建附加表,我可以存储可递增变量
并添加在将行添加到事务表时开始执行的触发器。
CREATE TRIGGER update_counter AFTER INSERT ON transaction
ON counter
BEGIN
count_var = count_var + 1;
END;
但是如果同时添加10个条目会发生什么情况,例如?
最后一个解决方案是使用information_schema。像这样的东西
SELECT TABLE_ROWS
FROM information_schema.tables
WHERE table_name = "transaction"
那么解决这种情况最合适的方法是什么?
答案 0 :(得分:0)
需要大约一百万的确切数值的“商业规则”?发送给Dilbert;尖尖的老板会喜欢它。
请记住,当搜索引擎向您显示确切的点击次数时,它们会以如此之快的速度返回值,以至于可疑吗?然后他们更诚实一点,并说“超过120,000的人中有1-20人”?现在他们甚至都不打扰。
您应该提出一个严肃的问题 - 为什么需要完全号码?一个近似的数字会吗?截至昨晚的数字是否足够?
通过这些答案,我们可以帮助设计一个“足够好”的计算,并且“足够快”。