程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> count(*) 與 count(1)的效率問題(Oracle)

count(*) 與 count(1)的效率問題(Oracle)

編輯:Oracle數據庫基礎

當表的數據量大些時,對表作分析之後,使用count(1)還要比使用count(*)用時多了!從執行計劃來看,count(1)和count(*)的效果是一樣的。
但是在表做過分析之後,count(1)會比count(*)的用時少些(1w以內數據量),不過差不了多少。
這個也與表的記錄數多少有關!如果1w以外的數據量,做過表分析之後,反而count(1)的用時比count(*)多了。另外,當數據量達到10w多的時候,使用count(1)要比使用count(*)的用時稍微少點!如果你的數據表沒有主鍵,那麼count(1)比count(*)快
如果有主鍵的話,那主鍵(聯合主鍵)作為count的條件也比count(*)要快
如果你的表只有一個字段的話那count(*)就是最快的啦
count(*) count(1) 兩者比較。主要還是要count(1)所相對應的數據字段。
如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。
因為count(*),自動會優化指定到那一個字段。所以沒必要去count(1),用count(*),sql會幫你完成優化的  
因此:count(1)和count(*)基本沒有差別!sql調優,主要是考慮降低:consistent gets和physical reads的數量。

如果null參與聚集運算,則除count(*)之外其它聚集函數都忽略null.

如:
  ID DD
  1 e
  2 null
  select count(*) from table --結果是2

  select count(DD) from table ---結果是1

也可以Tom的網站討論的結果:

http://asktom.Oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1156151916789

結論是不相上下。

個人認為count(*)好些。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved