`
weilJava
  • 浏览: 69133 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

【转】count(*) 与 count(1)的效率问题(Oracle)

 
阅读更多
当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count(*)的效果是一样的。
但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。
这个也与表的记录数多少有关!如果1w以外的数据量,做过表分析之后,反而count(1)的用时比count(*)多了。另外,当数据量达到10w多的时候,使用count(1)要比使用count(*)的用时稍微少点!如果你的数据表没有主键,那么count(1)比count(*)快
如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快
如果你的表只有一个字段的话那count(*)就是最快的啦
count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。
如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。
因为count(*),自动会优化指定到那一个字段。所以没必要去count(1),用count(*),sql会帮你完成优化的 
因此:count(1)和count(*)基本没有差别!sql调优,主要是考虑降低:consistent gets和physical reads的数量。

如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null.

如:
  ID DD
  1 e
  2 null
  select count(*) from table --结果是2

  select count(DD) from table ---结果是1

也可以Tom的网站讨论的结果:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1156151916789

结论是不相上下。

个人认为count(*)好些。

链接:http://www.huomo.cn/database/article-18dbf.html
分享到:
评论

相关推荐

    为什么阿里巴巴禁止使用 count(列名)或 count(常量)来替代 count(*)1

    介绍完了COUNT(*),接下来看看COUNT(1),对于,这者到底有没有区别,上的说法众说纷纭。有的说 COUNT(*) 执时会转换成 COUNT(1) ,所

    【优化】COUNT(1)、COUNT()、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)等

    BLOG_Oracle_lhr_【优化】COUNT(1)、COUNT()、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名).pdf

    监控oracle数据DG状态超详细版

    ssion count" from v$session where status='ACTIVE ******** total sessions count *************** sion count" from v$session; ******** top 30 big objects name ********** a35 a15 -----部分截断sql---

    oracle经典面试题oracle经典面试题oracle经典面试题

    ORACLE是ORACLE公司的数据产品,支持海量数据存储,支持分布式布暑,支持多用户,跨平台,数据安全完整性控制性能优越,是一个ORDBMS,一般用在大型公司。 2、能不能设计数据库?如何实现数据库导入与导出的更新 ...

    oracle11204静默安装

    mkdir -p /u01/app/oracle/product/11.2.0/db_1 chown -R oracle:oinstall /u01/app/oracle/ chmod -R 775 /u01/app/oracle/ 3. 内存和swapd分区准备 内存至少要2G,swap分区要内存的2倍以上; swap分区不足时,...

    ORACLE重复记录查询.docxORACLE

    select * from people where peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小...

    Oracle表删除大量数据(千万)后查询变慢问题(原因分析)

    Oracle表删除大量数据(千万)后查询变慢问题(原因分析)

    解决Oracle表删除大量数据后查询变慢问题

    Oracle 表删除大量数据后,即使表中只有几行记录,但用select count(*) from table 来查询发觉都不会马上出来,原因是该表的空间大了

    Oracle分析函数基本概念和语法总结及Regexp_***用法

    Oracle分析函数基本概念和语法总结及Regexp_***(regexp_substr,regexp_instr, regexp_like, regexp_replace, regexp_count)用法

    Oracle-01查询学习.pdf

    select count(1) from emp; select count(*) from emp; /* 别名查询: 使用as 关键字, 可以省略 别名中不能有特殊字符或者关键字, 如果有就加双引号 */ select ename 姓名, sal 工资 from emp; select ename ...

    oracle不走索引可能原因.docx

    oracle不走索引可能原因

    获取top前10个Oracle的进程(支持多实例)

    jdbcUrl=jdbc:oracle:thin:@193.0.10.110:1521:MG01 username=DBUSROMS1 password=**** count=1 数据库连接 DELETE FROM SELLMAIL WHERE SMKEY = :B1 当前正执行SQL jdbcUrl=jdbc:oracle:thin:@193.0.10.110:1521:...

    oracle的sql优化

     Count(1)和Count(*)差别不大。  多使用Decode函数来作简单的代码和名称间的转换,以减少表关联  使用Truncate替代delete来删除记录,但Truncate数据不记录日志,无法进行回滚  对于复杂的存储过程可以多次提交...

    oracle学习日志总结

    1. 采用共享sql(带占位符或者参数sql). 2. 使用表别名. 3. 尽量避免反复访问同...7. count(1)比count(*)更有效率。 8. 注意表之间连接的数据类型,避免不同类型数据之间的连接。注意存储过程中参数和数据类型的关系 。

    ORACLE9i_优化设计与系统调整

    第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §...

    SQLServer和Oracle的常用函数

    SQLServer和Oracle的常用函数

    详解Oracle自定义异常示例

    1.弹出错误框: 示例代码: declare v_count number; begin select count(*) into v_count from dept; if v_count < 10 then raise_application_error(-20001,'数量小于10'); end if; end; 执行结果: 2....

    Oracle SQL

    Oracle SQL overview about general sql usage in oracle

    Oracle删除重复的数据,Oracle数据去重复

    select * from employee group by emp_name having count (*)>1;  Oracle 查询可以删除的重复数据 select t1.* from employee t1 where (t1.emp_name) in (SELECT t2.emp_name from employee t2 group by emp_name...

    最全的oracle常用命令大全.txt

    Where SUBSTR(PRODUCT,1,6)='Oracle'; 9、查看数据库的创建日期和归档方式 Select Created, Log_Mode, Log_Mode From V$Database; 四、ORACLE用户连接的管理 用系统管理员,查看当前数据库有几个用户连接: ...

Global site tag (gtag.js) - Google Analytics