首页 新闻 会员 周边 捐助

执行一复杂的SQL语句效率高,还是执行多少简单的语句效率高

0
悬赏园豆:5 [已解决问题] 解决于 2020-08-26 18:50

我要统计数据库表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,

泱泱的主页 泱泱 | 初学一级 | 园豆:2
提问于:2019-10-30 21:32
< >
分享
最佳答案
0

效率应该是差不多的。主要是看楼主用在什么地方,如果查询次数多的话 建议采用第一种。这样数据库连接次数多一点但是相对来说连接时长要少一些,反之就是查询次数少一点,但是数据库连接时长占的多一点

收获园豆:5
初夏的阳光丶 | 小虾三级 |园豆:641 | 2019-10-31 09:30

从数据库的角度来说,这两条语句在数据库中的执行效率哪个会好一些,或者有没有其他更高效的方法。

泱泱 | 园豆:2 (初学一级) | 2019-10-31 09:43

@泱泱: 如果楼主是Mysql数据库的话 可以去默认数据库 information_schema 表Table中可以查询表的总行数 这个比你的查询是更高效的 但是前提是你知道数据库表面

初夏的阳光丶 | 园豆:641 (小虾三级) | 2019-10-31 10:08

@初夏的阳光丶: 总条数数据库一般都有记录的,但是统计的是过滤后的条数。

泱泱 | 园豆:2 (初学一级) | 2019-10-31 13:37

@泱泱: 如果这样的话,个人还是推荐第一种写法

初夏的阳光丶 | 园豆:641 (小虾三级) | 2019-10-31 13:38
其他回答(5)
1

换汤不换药

pencile | 园豆:845 (小虾三级) | 2019-10-30 22:05
1

如果考虑网络IO成本的话,可能方案2更好

通信的搞程序 | 园豆:1757 (小虾三级) | 2019-10-31 08:50
0

赞同二楼,考虑到可能存在拼sql导致无法重用缓存计划,可以考虑多条sql语句,多个结果集。

czd890 | 园豆:14488 (专家六级) | 2019-10-31 14:21
0

我认为还是方案二好一点,方案一会取重复的取数据库连接池拿连接,如果连接都被使用的情况下,会创建连接,重复这个动作,还是很耗时间的。

Java丨Mr.Chen | 园豆:208 (菜鸟二级) | 2020-03-17 10:48
0

你觉得呢?

小明同学% | 园豆:50 (初学一级) | 2020-08-26 18:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册