count(*)定count(id)?

寫sql的都知道, 要乜先好select乜, 唔好select *
咁count呢? 點解count親一定係星星? 而唔係id?
唔通唔會影響速度嗎? 如果無影響, 係咪一定的? 無論邊個db都係?

寫sql的都知道, 要乜先好select乜, 唔好select *
咁count呢? 點解count親一定係星星? 而唔係id?
唔通唔會影 ...
3ldk 發表於 2015-3-22 22:18



    點解count親一定係星星? <--- 唔一定 ,係睇情況


如果你只係 count  total record 多數都係 count (*)

如果 你用 group by , count 番每個 group 有幾多條record ,    count(*) / count(field)  係會有唔同

TOP

count(ID)

TOP

點解count親一定係星星?
hihihi123hk 發表於 2015-3-22 22:36



  如果只係 count  total record , 何解count id唔會快過count(*)?

TOP

如果只係 count  total record , 何解count id唔會快過count(*)?
3ldk 發表於 2015-3-22 23:10

Table

result


試左 6萬隻 record
count(*) 快啲
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

圖解





放大至 26萬隻 record 同時 加入其它 field   估計 係愈complex 就愈慢
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

count(1)呢

TOP

本帖最後由 hihihi123hk 於 2015-3-23 00:35 編輯
count(1)呢
watkower 發表於 2015-3-23 00:26


same as count(*)



應該  count(*) = count(true) = count(1)

無落度 filter 就係最快
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

TOP

本帖最後由 紫河馬 於 2015-3-23 09:10 編輯

要睇你select d乜, 有冇join table, 同埋table data 靚唔靚
例如你要數落左幾多張單, 個order table 你係咪100% 確定 count(order_num) = count(*) ?
如果有百幾條 null order_num entry 咪計錯數lo

TOP