1)count(1)与count(*)比较:

1、如果你的数据表没有主键,那么count(1)比count(*)快
2、如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快
3、如果你的表只有一个字段的话那count(*)就是最快的啦
4、count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。
5、如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。  因为count(*),自动会优化指定到那一个字段。所以没必要去count(?),用count(*),sql会帮你完成优化的

2)count详解:

1、count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入).
2、distinct 列名,得到的结果将是除去值为null和重复数据后的结果

3)举例演示如下:

  1. 1 SQL> create table test
  2. 2 (
  3. 3 ename varchar2(10),
  4. 4 sal number(4)
  5. 5 );
  6. 6
  7. 7 表已创建。
  8. 8
  9. 9
  10. 10 SQL> insert into test values('fxe1',90);
  11. 11 已创建 1 行。
  12. 12
  13. 13 SQL> insert into test(ename) values('fxe2');
  14. 14 已创建 1 行。
  15. 15
  16. 16 SQL> insert into test(ename) values('fxe3');
  17. 17 已创建 1 行。
  18. 18
  19. 19 SQL> insert into test(ename) values('fxe4');
  20. 20 已创建 1 行。
  21. 21
  22. 22 SQL> insert into test values('fxe5',80);
  23. 23 已创建 1 行。
  24. 24
  25. 25 SQL> insert into test values('fxe6',80);
  26. 26 已创建 1 行。
  27. 27
  28. 28
  29. 29 SQL> select * from test;
  30. 30 ENAME SAL
  31. 31 ---------- ----------
  32. 32 fxe1 90
  33. 33 fxe2
  34. 34 fxe3
  35. 35 fxe4
  36. 36 fxe5 80
  37. 37 fxe6 80
  38. 38
  39. 39
  40. 40 SQL> select count(*) from test; -- count(*):包含NULL,一共6条记录
  41. 41 COUNT(*)
  42. 42 ----------
  43. 43 6
  44. 44
  45. 45 SQL> select count(1) from test; -- count(1):包含NULL,一共6条记录,和count(*)的结果一样
  46. 46 COUNT(1)
  47. 47 ----------
  48. 48 6
  49. 49
  50. 50 SQL> select count(sal) from test; -- count(列名):不包含NULL,但包含重复值项,一共3条记录
  51. 51 COUNT(SAL)
  52. 52 ----------
  53. 53 3
  54. 54
  55. 55 SQL> select count(distinct sal) from test; -- count(列名):不包含NULL,去重“count(distinct sal)”,一共2条记录
  56. 56 COUNT(DISTINCTSAL)
  57. 57 ------------------
  58. 58 2
  59. 59
  60. 60 SQL> select distinct sal from test;
  61. 61 SAL
  62. 62 ----------
  63. 63 80
  64. 64 90

本文转至:http://blog.csdn.net/szstephenzhou/article/details/8446481

【转载】Oracle 中count(1) 、count(*) 和count(列名) 函数的区别的更多相关文章

  1. Oracle 中count(1) 、count(*) 和count(列名) 函数的区别

    1)count(1)与count(*)比较: 1.如果你的数据表没有主键,那么count(1)比count(*)快2.如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快3. ...

  2. [转载]Oracle中TO_NUMBER()函数的用法

    1 用法简介TO_NUMBER函数()是Oracle中常用的类型转换函数之一,主要是将字符串转换为数值型的格式,与TO_CHAR()函数的作用正好相反. To_number函数的格式如下: To_nu ...

  3. [转载]Oracle中的NVL函数

    Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...

  4. [转载]Oracle中动态SQL详解

    1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一 ...

  5. C++中构造函数,拷贝构造函数和赋值函数的区别和实现

    C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法.下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象 ...

  6. 转载 ORACLE中实现表变量的方法

    源文地址:http://blog.itpub.net/750077/viewspace-2134222/ 经常看到SQLSERVER 中用表变量类型的方式就能做到缓存一个比较大的中间结果, 然后再对这 ...

  7. oracle中varchar、varchar2、char和nvarchar的区别

    1.char char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节: char是区分中英文的,中文在 ...

  8. Oracle中与日期时间有关的运算函数

    1            ADD_MONTHS 格式:ADD_MONTHS(D,N) 说明:返回日期时间D加N月后对应的日期时间.N为正时则表示D之后:N为负时则表示为D之前:N为小数则会自动先删除小 ...

  9. oracle中merge的用法,以及各版本的区别 Create

    Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key. Oracle在9i引入了merge命令,通过这个merge你能够在一个SQL语句中对一个 ...

随机推荐

  1. Java 动态代理详解

    package com.at221; //代理设计模式: interface ClothFactory{ void product(); } class NikeFactory implements ...

  2. 构建高性能的MYSQL数据库系统-主从复制

    实验环境: DB1:172.16.1.100 DB2:172.16.1.101 VRRIP:172.16.1.99 步骤: yum -y install mysql 1.修改DB1的mysql配置文件 ...

  3. 什么是软件开发工具包(SDK)

    开发一个软件,需要经过编辑.编译.调试.运行几个过程. 编辑:使用编程语言编写程序代码的过程. 编译:如上一节所讲,就是将编写的程序进行翻译. 调试:程序不可能一次性编写成功,编写过程中难免会出现语法 ...

  4. org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)

    通过start.spring.io下载maven工程导入eclipse后,出现pom文件错误: org.codehaus.plexus.archiver.jar.Manifest.write(java ...

  5. servlet injection analysis

    一. Spring不能通过注解向Servlet中注入实例的原理 想了解此问题的原理,就要了解tomcat启动后 servlet和spring的加载顺讯. 1.  tomcat启动后先加载web.xml ...

  6. kubernetes1.5新特性(二):支持Photon卷插件

    在Kubernetes中卷的作用在于提供给POD持久化存储,这些持久化存储可以挂载到POD中的容器上,进而给容器提供持久化存储. 从图中可以看到结构体PodSpec有个属性是Volumes,通过这个V ...

  7. json字符串 转Java List 简单方法

    JSONArray jsonArr = JSONArray.fromObject(jsonStr); List<Map<String,Object>> listMap = (L ...

  8. 【题解】Luogu P4054 [JSOI2009]计数问题

    原题传送门 我自闭了qaq 这道题非常简单,因为1<=c<=100,所以直接对每个c开二维树状数组,操作就跟模板一样 写码5分钟,调码半小时,这道题的输入顺序是x1,x2,y1,y2,我真 ...

  9. shiro权限管理入门程序

    最近在学shiro,觉得入门程序还是有用的,记下来防止遗忘,也可供大家参考. package cn.itcast.shiro.authentication; import org.apache.shi ...

  10. java程序员面试交流项目经验

    粘贴自:https://blog.csdn.net/wangyuxuan_java/article/details/8778211 1:请你介绍一下你自己 这是面试官常问的问题.一般人回答这个问题过于 ...