Oracle中count的用法
Select count(1) 和Select count(*) 返回的结果一样吗?
那么Select count(distinct Column1) from test1 ;
Select count(distinct Column1) from test1 又如何呢?
测试一下:
test1表的内容如下:
select count(1) from test1;--包括空的 8
select count(*) from test1;--包括空的 8
select count(column1) from test1; --非空的统计 6
select count(distinct column1) from test1; --非空,去除重复 3
------解决方案--------------------楼主想表达什么。印象中记得Select count(1) 和Select count(*) 主要是是考虑在数据量较大的时候的效率问题
------解决方案--------------------Select count(1)/count(0)... 和Select count(*) 在结果上是一样的,即时有null值也会记录一条记录的
select count(column1) from test1 表示不包括column1为null的
select count(distinct column1) from test1 表示不包括为null的,并且去掉重复的
------解决方案--------------------前2句结果一样 但是效率会有轻微的差别
count(*)走的是标识列 就是隐藏列rowid 效率稍高
count(1)走的是行赋值 要用的话一般会使用count(主键)
后面2句容易理解
------解决方案--------------------前二句效率不样,结果一样
Select count(distinct Column1) from test1 查的意思跟结果都不样
------解决方案--------------------楼主不是都知道了?就是这个意思
------解决方案--------------------COUNT(字段最好是索引字段)
------解决方案--------------------Select count(distinct Column1) from test1
这个肯定是和别的没法比效率