我要统计数据库表15张表的条数,以下两种方案哪个执行的快一些:
方案一:
执行15次统计SQL:
select count(1) from 表1 where条件
select count(1) from 表2 where条件
.........
select count(1) from 表15 where条件
方案二:
使用一条SQL一下子统计出15张表的条数:
select
(select count(1) from 表1 where条件) t1_count,
(select count(1) from 表2 where条件) t2_count,
........
(select count(1) from 表15 where条件) t15_count,
效率应该是差不多的。主要是看楼主用在什么地方,如果查询次数多的话 建议采用第一种。这样数据库连接次数多一点但是相对来说连接时长要少一些,反之就是查询次数少一点,但是数据库连接时长占的多一点
从数据库的角度来说,这两条语句在数据库中的执行效率哪个会好一些,或者有没有其他更高效的方法。
@泱泱: 如果楼主是Mysql数据库的话 可以去默认数据库 information_schema 表Table中可以查询表的总行数 这个比你的查询是更高效的 但是前提是你知道数据库表面
@初夏的阳光丶: 总条数数据库一般都有记录的,但是统计的是过滤后的条数。
@泱泱: 如果这样的话,个人还是推荐第一种写法
换汤不换药
如果考虑网络IO成本的话,可能方案2更好
赞同二楼,考虑到可能存在拼sql导致无法重用缓存计划,可以考虑多条sql语句,多个结果集。
我认为还是方案二好一点,方案一会取重复的取数据库连接池拿连接,如果连接都被使用的情况下,会创建连接,重复这个动作,还是很耗时间的。
你觉得呢?