mysql我有一张350万数据的表,怎么优化sum()查询?

就这样的一条sql,数据量太大,查询很慢。。

select ifnull(sum(total_stock_cost),0) from table;
阅读 8.6k
5 个回答
  1. 实时要求高吗? 不高可以每天定时处理,结果另存
  2. 要求实时查,

    1. 可以存一个备份的未变更的数据表,然后根据未变更的数据求出总数。作为原始数据
    2. 有更新操作更新就更新原表
    3. 查询请求,根据更新时间,可以只查询最近时间范围更新的记录,计算差值+备份表的数据
    4. 定时备份,生成备份记录数据
    5. 写好备份和备份表同步的接口,防止备份出错,数据不一致
  3. 最简单的应该是用es

吧你要进行 sum 的字段加上索引, 已及你的查询条件相关的字段

索引层面的优化都已经加上了

分区或者分表

应用层做优化?插入一条数据+1,删除数据-1
MyISAM存储引擎会单独记录表的条数、、、但是换存储引擎感觉不现实了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏