select count(*) as aggregate from `call_records` where (`CallType` = 'dialout' and `CalledNo` = '12345678910');
这条查询如何优化?前提是不能建立索引,因为这张表里面已经有好几个索引了,有可能导致锁表。
光阴似箭催人老,日月如移越少年。
是不是热数据,不是热数据就搞个脚本定时跑把统计的count存到另一个张统计表里去。热数据的话你看看之前建的索引能不能搞成组合索引,因为B树从左开始,你建个(a,b,c)的,a和a,b和a,b,c都能用了,代码层的查询函数注意字段顺序。
把索引重新优化下吧,单个索引建的太多了,就想办法建个联合索引。假如这个统计不需要实时性,就用md5(sql语句)作为key,把结果作为值,存放到缓存里(redis)。
是不是热数据,不是热数据就搞个脚本定时跑把统计的count存到另一个张统计表里去。
热数据的话你看看之前建的索引能不能搞成组合索引,因为B树从左开始,你建个(a,b,c)的,a和a,b和a,b,c都能用了,代码层的查询函数注意字段顺序。
把索引重新优化下吧,单个索引建的太多了,就想办法建个联合索引。假如这个统计不需要实时性,就用md5(sql语句)作为key,把结果作为值,存放到缓存里(redis)。