Oracle中count的用法

踏雁寻花 2013-10-23 10:46:22
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
...全文
1500 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
空心兜兜 2013-10-24
  • 打赏
  • 举报
回复
Select count(distinct Column1) from test1 这个肯定是和别的没法比效率
一十七 2013-10-24
  • 打赏
  • 举报
回复
COUNT(字段最好是索引字段)
qinglang1987 2013-10-23
  • 打赏
  • 举报
回复
前二句效率不样,结果一样 Select count(distinct Column1) from test1 查的意思跟结果都不样
  • 打赏
  • 举报
回复
前2句结果一样 但是效率会有轻微的差别 count(*)走的是标识列 就是隐藏列rowid 效率稍高 count(1)走的是行赋值 要用的话一般会使用count(主键) 后面2句容易理解
踏雁寻花 2013-10-23
  • 打赏
  • 举报
回复
引用 1 楼 jinlu283871505 的回复:
楼主想表达什么。印象中记得Select count(1) 和Select count(*) 主要是是考虑在数据量较大的时候的效率问题
Select count(1) 和Select count(*) 任何时候都应该一样吧
无敌小二傻 2013-10-23
  • 打赏
  • 举报
回复
Select count(1)/count(0)... 和Select count(*) 在结果上是一样的,即时有null值也会记录一条记录的 select count(column1) from test1 表示不包括column1为null的 select count(distinct column1) from test1 表示不包括为null的,并且去掉重复的
1惯親手 2013-10-23
  • 打赏
  • 举报
回复
楼主想表达什么。印象中记得Select count(1) 和Select count(*) 主要是是考虑在数据量较大的时候的效率问题
善若止水 2013-10-23
  • 打赏
  • 举报
回复
楼主不是都知道了?就是这个意思

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧