1.關(guān)于count(1),count(*),和count(列名)的區(qū)別
相信大家總是在工作中,或者是學(xué)習(xí)中對于count()的到底怎么用更快。一直有很大的疑問,有的人說count(*)更快,也有的人說count(列名)更快,那到底是誰更快,我將會在本文中詳細(xì)介紹一下到底是count(1),count(*)和count(列明)的區(qū)別,和更適合的使用場景。
往常在工作中有人會說count(1)比count(*)會快,或者相反,首先這個結(jié)論肯定是錯的,實(shí)際上count(1)和count(*)并沒有區(qū)別。
接下來,我們來對比一下count(*)和count(列)到底誰更快一些
首先我們執(zhí)行以下sql,來看一下執(zhí)行效率(下面sql針對的是ORACLE數(shù)據(jù)庫,大致邏輯為先刪除t別,然后在根據(jù)dba_objects創(chuàng)建t表,在更新t表根據(jù)rownum)
1 drop table t purge; 2 create table t as select * from dba_objects; 3 --alter table T modify object_id null; 4 update t set object_id =rownum ; 5 set timing on 6 set linesize 1000 7 set autotrace on --開啟跟蹤 8 9 select count(*) from t;10 /11 select count(object_id) from t;12 /
然后咱們分別看一下“select count(