问题:
执行如下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(*)频繁统计。
以上就是统计29万条数据耗时13秒,合理吗?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号