php中文网

MYSQL 统计 30 万条数据耗时 13 秒,正常吗?如何优化?

php中文网

mysql 统计近 30 万条数据时间过长?

当需要统计大量数据时,例如这里提到的二十九万条数据,mysql 的执行速度似乎令人担忧,直接使用 count(*) 查询需要 13 秒多。对于这种数量级的数据,这个时间开销是否正常呢?

可能的优化方案

  • 避免使用 count(*): count(*) 对整个表进行全表扫描,对于大表来说代价比较高。建议将其替换为条件查询或索引扫描。
  • 维护统计数据: 不要在每次查询时都统计,可以考虑通过触发器或其他机制在数据更新时自动维护统计数据。
  • 利用触发器: mysql 支持使用触发器来在事件发生时自动执行任务,可以在数据更新时自动更新统计数据,避免手动维护。

具体实现

以下是一个使用触发器维护统计数据的示例:

CREATE TRIGGER `trigger_t_order` AFTER INSERT ON `t_order_old`
FOR EACH ROW
BEGIN
  -- 更新统计数据
  UPDATE `t_order_stats` SET `count` = `count` + 1 WHERE `order_id` = NEW.`order_id`;
END

通过这样的方法,可以使用户在需要时快速获取统计数据,而无需每次都对大量数据进行扫描。

以上就是MYSQL 统计 30 万条数据耗时 13 秒,正常吗?如何优化?的详细内容,更多请关注php中文网其它相关文章!