select count(*)和select count(1)的区别

通常状况下,Select Count (*)和Select Count(1)两着返回结果是同样的数据库

    假如表沒有主键(Primary key), 那么count(1)比count(*)快,函数

    若是有主键的話,那主键做为count的条件时候count(主键)最快性能

    若是你的表只有一个字段的话那count(*)就是最快的教程

   count(*) 跟 count(1) 的结果同样,都包括对NULL的统计,而count(column) 是不包括NULL的统计索引

 一、select 1 与 select *的区别 
selelct 常量 from ... 对应全部行,返回的永远只有一个值,即常量 。因此正常只会用来判断是否有仍是没有(好比exists子句)。而select * from ... 是返回全部行的全部列。 
性能上的差别,关键看你的from和where子句。好比说若是你的where条件中能够经过索引,那显然 select 1 from ... 的性能比 select * from ... 好。 
二、select sum(1)的使用 
select count(*)返回全部知足条件的记录数,此时同select sum(1) 
可是sum()能够传任意数字,负数、浮点数均可以,返回的值是传入值n*知足条件记录数mtest

B效率

select count(1) from test 
-- 在没有汇集的状况下,这种查询的效率可能会高一点
select count(*) from test 
-- 有索引走索引,没索引全表扫描,能够利用表的统计信息
select count(a) from test 
-- 扫描a列的数据记录数,若是a上没有索引,则效率最差,而且若是a列包含null,则不会计数select

Cim

count(1) 是绝对快,它只统计记录条数,对条件下的表扫描一遍而已
count(*) 是可能快,有主键的时候只扫主键,主键数等于记录数
count(主键)=count(1)

COUNT(*)与COUNT(列名)的区别统计

之前一直没有留意到COUNT(*)与COUNT(列名)的区别,昨天晚上无心中看到数据库系统工程师教程里面的一句话."若是null参与汇集运算,则除count(*)以外其它汇集函数都忽略null."       这句话的意思说若是字段是有空值的话,你用SUM去计算,获得的结果有可能不许确.     看一个实例.     表A     ID    EE       1      e       2    null     select  count(*) from A  --结果是2     select  count(EE)  from A  ---结果是1

相关文章
相关标签/搜索