考试,目的在于让自己明白,自己天天写的都是垃圾
select count(*) 和 select count(1) 以及 select count(column) 的区别
1、如果表沒有主键, 那么count(1)比 count(*)快,这个数据量如果比较小,可能差别太大,但是对于数仓每天百万条数据,对比还是很明显的,已验证
2、如果表没有主键,只建了索引,那么count(*),count(1)是一样的,都是全表扫描 TABLE ACCESS FULL ,而 count(索引)则是索引扫描 ,这样扫描的差距也不是一点点INDEX FULL SCAN
3、如果表有主键,那主键作为count的条件时候count(主键)最快,这个最容易理解
4、如果表没有主键,只有一个column的话,那么count(*)就是最快的
5、count(*)跟count(1)的结果一样,都包括对NULL的统计,而count(column)是不包括NULL的统计