看如下数据:

 SQL> select count(*) from ysgl_compile_reqsub;

   COUNT(*)
----------
5288265 已用时间: 00: 00: 07.51
SQL> select count(1) from ysgl_compile_reqsub; COUNT(1)
----------
5288265 已用时间: 00: 00: 00.68
SQL> select count(id) from ysgl_compile_reqsub; COUNT(ID)
----------
5288265 已用时间: 00: 00: 00.68
SQL> select count(rowid) from ysgl_compile_reqsub; COUNT(ROWID)
------------
5288265 已用时间: 00: 00: 01.01
SQL> select count(rowid) from ysgl_vdata_his; COUNT(ROWID)
------------
5299458 已用时间: 00: 00: 09.98
SQL> select count(*) from ysgl_vdata_his; COUNT(*)
----------
5299458 已用时间: 00: 00: 00.93
SQL> select count(1) from ysgl_vdata_his; COUNT(1)
----------
5299458 已用时间: 00: 00: 00.71
SQL> select count(1) from ysgl_excelbasic; COUNT(1)
----------
3755052 已用时间: 00: 00: 04.60
SQL> select count(*) from ysgl_excelbasic; COUNT(*)
----------
3755052 已用时间: 00: 00: 00.50
SQL>

不考虑Null的情况:
count(1)和count(主键) 这两个只扫描主键Index就可以得到数据,
count(*)是扫描表的。
所以count(1)和count(主键)这两个效率高。
还有一种写法是count(ROWID)这也是只扫描Index的,效率高。

这个问题就是问你什么时候Oracle容易走表查询,什么时候Oracle容易走INDEX查询。
实际应用中,你得看实际情况,没准这个表没有唯一键索引呢?在CBO(ORACLE提供的一种SQL优化器)的情况下,统计情报不准确呢?

这种问题会出现好多版本的回答。测试环境不同结果也不一样,你随便键个表,看看它们的执行计划,就能看出他们的区别了。

最新文章

  1. SAP 订单状态跟踪
  2. zju(7)ADC操作实验
  3. Daily Scrum – 1/4
  4. UVa 11054 Wine trading in Gergovia【贪心】
  5. js滑动门及对像的使用
  6. 小蔡计算器 V4.0新版全新发布上线啦~欢迎大家下载使用哈~
  7. ajax调用后台Java
  8. postgresql文档生成注意事项
  9. Hibernate在自由状态和持久的状态转变
  10. UVALive 2520 Holedox Moving(BFS+状态压缩)
  11. mui单选和多选框
  12. RTX临界段,中断锁与任务锁
  13. eslint详细配置
  14. 自学Linux Shell4.3-处理数据文件sort grep gzip tar
  15. 使用git进行代码的推送
  16. Dubbo 生态添新兵,Dubbo Admin 发布 v0.1
  17. How React Works (一)首次渲染
  18. HTTP协议常用标准状态码含义
  19. 【转】Apache服务器的下载与安装
  20. 一个导致MGR数据混乱Bug的分析和修复

热门文章

  1. 【转】在Ubuntu上下载、编译和安装Android最新源代码
  2. 关于 Unity NavMesh 数据的导出和使用
  3. Windows 10 录音上的一个问题
  4. PHP 获取时间的各种处理方式!
  5. 曾经记录——asp.net中的点滴
  6. (转载)WindowsXP上安装和运行神器SqlMap的步骤
  7. PHP向MySql中插入数据
  8. 《A First Course in Abstract Algebra with Applications》-chaper1-数论
  9. 用jQuery实现优酷首页轮播图
  10. Java对象的强、软、弱和虚引用详解