MySQL是计算数千行的最快方法

时间:2016-09-08 18:45:01

标签: mysql sql innodb database-performance

我有MySQL数据库,包含13个表。一个表交易将来会存储大量数据(近一百万条记录)。该表使用InnoDB存储引擎。因此,业务规则要求知道此表中所有记录的数量。所以,我的问题是,计算所有这些记录的更快方法是什么?

第一

当然我可以使用类似的东西:

SELECT COUNT(*) FROM transaction 

但显然这不是最佳解决方案。

第二

我可以创建附加表,我可以存储可递增变量

enter image description here

并添加在将行添加到事务表时开始执行的触发器。

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" 

那么解决这种情况最合适的方法是什么?

1 个答案:

答案 0 :(得分:0)

需要大约一百万的确切数值的“商业规则”?发送给Dilbert;尖尖的老板会喜欢它。

请记住,当搜索引擎向您显示确切的点击次数时,它们会以如此之快的速度返回值,以至于可疑吗?然后他们更诚实一点,并说“超过120,000的人中有1-20人”?现在他们甚至都不打扰。

您应该提出一个严肃的问题 - 为什么需要完全号码?一个近似的数字会吗?截至昨晚的数字是否足够?

通过这些答案,我们可以帮助设计一个“足够好”的计算,并且“足够快”。