做一个统计数据的接口有多个select count,MySQL 怎么写才能算是高效的接口

如题,如果做一个统计数据的SQL查询,查询的表来自四面八方,又有不同的条件限制,如果在一条SQL语句中,高效实现多个select count,这里只对SQL做考虑,比方举个例子,sql如下(这里数据超级少)

clipboard.png

像这种SQL,语句,该如何优化,或者说是简化SQL,这是部分sql,从例子中看的出来,还有好几个类别,平常写的大多是业务,技术型代码一直尚未研究,请各位大佬提点意见

注:count(X)中的 X 均为该表自增长主键ID, MySQL版本为8.0

阅读 3.9k
2 个回答

如果是同一个表的话可以考虑用group by,不同表的话没什么好办法呢
PS:MYSQL中 count(*)的效率要比count(字段)高哦

如果没性能问题,你那没啥问题,当然上缓存就是了,
还有用explain 分析下
你这子查询也可以拆分2条sql
`
select count(*),type as cnt fromo article where openID in =43 group by type

select count(*) from diary where openId=43 and type='public'
`

然后再业务中 拼接返回的数组.

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