Hello! 欢迎来到小浪云!


统计29万条数据耗时13秒,合理吗?


avatar
小浪云 2024-11-12 72

统计29万条数据耗时13秒,合理吗?

统计29万条数据耗时13秒,是否合理?

问题:

执行如下sql查询时,耗时13秒,查询29万条数据。

select count(*) from `t_order_old`
登录后复制

解答:

直接使用count(*)统计数据可能会导致性能问题。尤其是在数据量较大时,每次查询都需要遍历所有数据进行统计。

优化建议:

避免使用count(*),转而将需要的统计结果单独存储。

  • 使用触发器:
    在更新数据时自动更新统计数据。
  • 自行维护统计数据:
    在业务逻辑中同步维护统计数据。

示例:

以文章回复数量为例,可以使用如下方式统计:

-- 主表 CREATE TABLE `t_article` (   `article_id` INT NOT NULL AUTO_INCREMENT,   `reply_count` INT NOT NULL DEFAULT 0,      PRIMARY KEY (`article_id`) );   -- 触发器:更新回复数量 CREATE TRIGGER `tr_article_update_reply_count` AFTER UPDATE ON `t_reply` FOR EACH ROW BEGIN   UPDATE `t_article` SET `reply_count` = `reply_count` + NEW.`status` - OLD.`status`   WHERE `article_id` = NEW.`article_id`; END;
登录后复制

这样,每次更新回复数据时,文章的回复数量会自动更新,从而避免使用count(*)频繁统计。

相关阅读