全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4399
推到 Plurk!
推到 Facebook!

請問資料庫的select count的問題

答題得分者是:P.D.
17kobe
初階會員


發表:86
回覆:73
積分:31
註冊:2007-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-11-09 11:08:42 IP:210.68.xxx.xxx 訂閱
資料庫select count有分好幾種
SELECT COUNT(*)
SELECT COUNT(1)
SELECT COUNT(主索引鍵)
SELECT COUNT(欄位)

請問這幾個要怎麼分析什麼時候才適合自己來用,有人說select count(*)耗cpu多,select count(欄位)則耗cpu少
而select count(*) 及 select count(1)都較select count(欄位) 要來得快
不知道大大有沒有這些的分析

還有是我在SELECT COUNT(1)很大筆的數量,好像有發生問題,少了一位數資料,現在還在查詢原因中。
P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-11-09 22:54:33 IP:61.67.xxx.xxx 未訂閱
count(*) --> 會傳回所有資料列的筆數
count(欄位) -->會傳回指定欄位中不為空值null的所有資料列筆數
至於 count(1) 沒聽說過, 我用 IB , 可能其他SQL有吧!
COUNT(索引), 其實索引也是一個欄位,
因此也就是 COUNT 基本上就兩種 COUNT(*) 或 COUNT(欄位)
但選擇COUNT(欄位), 如果該欄位有建立INDEX的話, 運算的速度會比欄位沒有索引的要快

其實COUNT 有一種很好的用法, 如果今天你想知道某一個欄位有幾筆是空值或非空值時, 要如何做

SELECT COUNT(AFIELD), COUNT(*) 假設回傳
----------------- ------------------
15 20

那代表什麼意思, AFIELD 被回算有15筆非空值, 總記錄有20筆, 那AFIELD有幾筆是空值, 不用我再算式了吧!
cluise789
一般會員


發表:1
回覆:5
積分:1
註冊:2007-08-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-11-13 12:32:03 IP:211.21.xxx.xxx 訂閱
select count(1)
select count(2)
select count(3)
select count(4)
select count(*)
....
都是Count 筆數
------
cluise is a professional programmer.
系統時間:2017-10-17 17:35:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!