2 u013238336 u013238336 于 2017.07.17 17:50 提问

为什么SQL的执行计划相同执行时间却相差很大

为什么2个简单SQL查询语句的执行计划几乎完全相同,但是执行时间却相差很大?语句如下:
select count(*) from student; 【不到1s】
执行计划:
Aggregate (cost=130600.76..130600.77 rows=1 width=0)
-> Seq Scan on student(cost=0.00..125718.01 rows=1953101 width=0)
select sum(money) from student;【需要4s】
执行计划:
Aggregate (cost=130600.77..130600.78 rows=1 width=4)
-> Seq Scan on student(cost=0.00..125718.01 rows=1953101 width=4)

2个回答

jazob
jazob   2017.07.17 19:52

sql命令看似相同,其实里面的计算过程还是相差很大的
你这个命令的差别主要在于一个是相加(sum)一个是技术(count)
count只是简单的+1,简化到二进制运算比如1+1就是二进制码左移一位,计算速度相当快
sum的计算速度就慢多了,首先money本来就是double型的数据,计算本来就比count这种int型数据慢,其次基本上没有直接二进制左移这种快速运算的可能

这其实和人一样,给你5~6个数字,一眼就能看出是几个,但是数字大点的话,就不能一眼就算出来和是多少。

u013238336
u013238336 那sum这个语句该怎么样能使执行时间降下来呢?
3 个月之前 回复
oyljerry
oyljerry   Ds   Rxr 2017.07.17 18:36

虽然执行计划一样,但是各自做的事情有点区别,count只是计数,而sum是进行求和,时间差别在这里。

u013238336
u013238336 那么,sum这个语句该怎么提速呢?
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片