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

本文转至:http://blog.csdn.net/szstephenzhou/article/details/8446481
【转载】Oracle 中count(1) 、count(*) 和count(列名) 函数的区别的更多相关文章
- Oracle 中count(1) 、count(*) 和count(列名) 函数的区别
1)count(1)与count(*)比较: 1.如果你的数据表没有主键,那么count(1)比count(*)快2.如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快3. ...
- [转载]Oracle中TO_NUMBER()函数的用法
1 用法简介TO_NUMBER函数()是Oracle中常用的类型转换函数之一,主要是将字符串转换为数值型的格式,与TO_CHAR()函数的作用正好相反. To_number函数的格式如下: To_nu ...
- [转载]Oracle中的NVL函数
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...
- [转载]Oracle中动态SQL详解
1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一 ...
- C++中构造函数,拷贝构造函数和赋值函数的区别和实现
C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法.下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象 ...
- 转载 ORACLE中实现表变量的方法
源文地址:http://blog.itpub.net/750077/viewspace-2134222/ 经常看到SQLSERVER 中用表变量类型的方式就能做到缓存一个比较大的中间结果, 然后再对这 ...
- oracle中varchar、varchar2、char和nvarchar的区别
1.char char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节: char是区分中英文的,中文在 ...
- Oracle中与日期时间有关的运算函数
1 ADD_MONTHS 格式:ADD_MONTHS(D,N) 说明:返回日期时间D加N月后对应的日期时间.N为正时则表示D之后:N为负时则表示为D之前:N为小数则会自动先删除小 ...
- oracle中merge的用法,以及各版本的区别 Create
Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key. Oracle在9i引入了merge命令,通过这个merge你能够在一个SQL语句中对一个 ...
随机推荐
- 在CentOS 7中安装与配置Tomcat-8.5方法
安装说明 安装环境:CentOS-7 安装方式:源码安装 软件:apache-tomcat-8.5.39.tar.gz下载地址:http://tomcat.apache.org/download-80 ...
- Scrapy框架的学习(6.item介绍以及items的使用(提前定义好字段名))转载https://blog.csdn.net/wei18791957243/article/details/86259688
在Scrapy框架中的items.py的作用 1.可以预先定义好要爬取的字段 items.py import scrapy class TencentItem(scrapy.I ...
- NOIP2009(codevs1173)最优贸易
题目大意:给你一张有n个点m条边的有向图,每个点有一个权值,求一条1到n的路径,使得这条路径上存在两个点且他们的权值差最大. 思路:用dis[i]]记录从1到i的路径中所能得到两点间权值差的最大值,然 ...
- Numpy 数据类型和基本操作
Numpy 数据类型 bool 用一位存储的布尔类型(值为TRUE或FALSE) inti 由所在平台决定其精度的整数(一般为int32或int64) int8 整数,范围为128至127 int1 ...
- 禁止chrome浏览器的缓冲图片以及css等资源文件
今天做了一个动画的效果,在ff下正常 但是到了谷歌下就不正常了,非常郁闷,看了下是缓存的问题 ,于是度娘了一下发现清理缓存的技巧还是满多的,这里借鉴一下别人的总结,人的大脑有限,下次忘记的时候还可以在 ...
- Shell data、timedatectl
data系统时间管理命令 命令date +%F xxxx—xx--xx #查看当前日期. 命令date +%T xx:xx:xx #查看当前时间. 命令date +%y xx #年2位 命令date ...
- @Transacitonal注解不生效之spring中expose-proxy的作用与原理
几年前记得整理过,@Transacitonal注解的方法被另外一个方法调用的时候,事务是不生效的. 如果大量代码已经这么写了,这个时候抽取出去不现实,怎么办呢? 答案就是在<aop:aspect ...
- 微信小程序,天气预报(百度地图开放平台API)
小程序看似一种全新的东西,但好在基本上就是曾经HTML,CSS,JS的一个微变版本. 语法和之前一样.只是一些用法和名字(标签)发生了一些变化. 小程序主要就四种扩展名的文件:js,json,wxml ...
- 了解C语言
初学时的程序都需要打#include<stdio.h>及int main() //int main中int 声明函数类型为整形,main为主函数:‘//’为注释的意思,后面的内容不会运行 ...
- 【Visual Studio 扩展工具】如何在ComponentOneFlexGrid树中显示RadioButton
概述 在ComponentOne Enterprise .NET控件集中,FlexGrid表格控件是用户使用频率最高的控件之一.它是一个功能强大的数据管理工具,轻盈且灵动,以分层的形式展示数据(数据呈 ...