select count (1) 與select count(*)區別

count(1),其實就是計算一共有多少符合條件的行。

1並不是表示第一個字段,而是表示一個固定值。其實就可以想成表中有這麼一個字段,這個字段就是固定值1,count(1),就是計算一共有多少個1。

同理,count(2),也可以,得到的值完全一樣,count('x'),count('y')都是可以的。一樣的理解方式。在你這個語句理都可以使用,返回的值完全是一樣的。就是計數。

count(*),執行時會把星號翻譯成字段的具體名字,效果也是一樣的,不過多了一個翻譯的動作,比固定值的方式效率稍微低一些。

select count(*)和select count(1)的區別:

一般情況下,Select Count (*)和Select Count(1)兩着返回結果是一樣的,假如表沒有主鍵(Primary key), 那麼count(1)比count(*)快,如果有主鍵的話,那主鍵作爲count的條件時候count(主鍵)最快,如果你的表只有一個字段的話那count(*)就是最快的。

count(*) 跟 count(1) 的結果一樣,都包括對NULL的統計,而count(column) 是不包括NULL的統計。

1、select 1 與 select *的區別 

selelct 常量 from ... 對應所有行,返回的永遠只有一個值,即常量 。所以正常只會用來判斷是否有還是沒有(比如exists子句)。而select * from ... 是返回所有行的所有列。 

性能上的差異,關鍵看你的from和where子句。比如說如果你的where條件中可以通過索引,那顯然 select 1 from ... 的性能比 select * from ... 好。 

2、select sum(1)的使用 

select count(*)返回所有滿足條件的記錄數,此時同select sum(1) 

但是sum()可以傳任意數字,負數、浮點數都可以,返回的值是傳入值n*滿足條件記錄數m

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章