difference between count(*) and count(col) in the query

本文通过在Oracle数据库中创建包含999个字段的测试表,并插入10000条数据,对比了COUNT(*)与COUNT特定列的执行效率。结果显示COUNT特定列随列位置后移而变慢,但总体与COUNT(*)性能相当。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.建立测试表<wbr style="line-height:25px"></wbr>
declare
l_sql varchar2(32767);
begin
l_sql:='create table t(';
for i in 1..999
loop
l_sql:=l_sql||'n'||i|| ' number, ';
end loop;
l_sql:=l_sql||'pad varchar2(50)) pctfree 10';
execute immediate l_sql;
end;
/
这里是建议一张999个字段的表
2.插入数据
declare
l_sql varchar2(32767);
begin
l_sql:='insert into t select ';
for i in 1..999
loop
l_sql:=l_sql|| '0,';
end loop;
l_sql:=l_sql|| 'null from dual connect by level<=10000';
execute immediate l_sql;
commit;
end;
/
插入10000条数据
3.查看执行的时间
DECLARE
l_dummy PLS_INTEGER;
l_start PLS_INTEGER;
l_stop PLS_INTEGER;
l_sql VARCHAR2(100);
BEGIN
l_start := dbms_utility.get_time;
FOR j IN 1..20
LOOP
EXECUTE IMMEDIATE 'SELECT count(*) FROM t' INTO l_dummy;
END LOOP;
l_stop := dbms_utility.get_time;
dbms_output.put_line('COUNT星20次的时间是:'||to_char((l_stop-l_start)/100,'0.99'));

FOR i IN 1..250
LOOP
l_sql := 'SELECT count(n' || i || ') FROM t';
l_start := dbms_utility.get_time;
FOR j IN 1..20
LOOP
EXECUTE IMMEDIATE l_sql INTO l_dummy;
END LOOP;
l_stop := dbms_utility.get_time;
dbms_output.put_line('COUNT各列20次的时间是:'||to_char((l_stop-l_start)/100,'0.99'));
END LOOP;
END;
/

输出结果:
COUNT星20次的时间是: 0.14
COUNT各列20次的时间是: 0.14
COUNT各列20次的时间是: 0.15
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.15
COUNT各列20次的时间是: 0.15
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.15
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.16
COUNT各列20次的时间是: 0.17
COUNT各列20次的时间是: 0.17
COUNT各列20次的时间是: 0.17
COUNT各列20次的时间是: 0.17
COUNT各列20次的时间是: 0.17
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.17
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.17
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.17
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.18
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.19
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.20
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.21
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.22
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.23
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.24
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.25
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.26
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.27
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.28
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.34
COUNT各列20次的时间是: 0.33
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.29
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.30
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.32
COUNT各列20次的时间是: 0.31
COUNT各列20次的时间是: 0.32
可见越是在后面的列需要的时间越久,但是和count(1)和count(*)是一样的,因为1是数据不是列,不需要定位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值