当表的数据量大些时,对表作分析之后,使用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(1),对于,这者到底有没有区别,上的说法众说纷纭。有的说 COUNT(*) 执时会转换成 COUNT(1) ,所
BLOG_Oracle_lhr_【优化】COUNT(1)、COUNT()、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名).pdf
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公司的数据产品,支持海量数据存储,支持分布式布暑,支持多用户,跨平台,数据安全完整性控制性能优越,是一个ORDBMS,一般用在大型公司。 2、能不能设计数据库?如何实现数据库导入与导出的更新 ...
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分区不足时,...
select * from people where peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小...
Oracle表删除大量数据(千万)后查询变慢问题(原因分析)
Oracle 表删除大量数据后,即使表中只有几行记录,但用select count(*) from table 来查询发觉都不会马上出来,原因是该表的空间大了
Oracle分析函数基本概念和语法总结及Regexp_***(regexp_substr,regexp_instr, regexp_like, regexp_replace, regexp_count)用法
select count(1) from emp; select count(*) from emp; /* 别名查询: 使用as 关键字, 可以省略 别名中不能有特殊字符或者关键字, 如果有就加双引号 */ select ename 姓名, sal 工资 from emp; select ename ...
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:...
Count(1)和Count(*)差别不大。 多使用Decode函数来作简单的代码和名称间的转换,以减少表关联 使用Truncate替代delete来删除记录,但Truncate数据不记录日志,无法进行回滚 对于复杂的存储过程可以多次提交...
1. 采用共享sql(带占位符或者参数sql). 2. 使用表别名. 3. 尽量避免反复访问同...7. count(1)比count(*)更有效率。 8. 注意表之间连接的数据类型,避免不同类型数据之间的连接。注意存储过程中参数和数据类型的关系 。
第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的常用函数
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 overview about general sql usage in 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...
Where SUBSTR(PRODUCT,1,6)='Oracle'; 9、查看数据库的创建日期和归档方式 Select Created, Log_Mode, Log_Mode From V$Database; 四、ORACLE用户连接的管理 用系统管理员,查看当前数据库有几个用户连接: ...