日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql distinct count_MySQL中distinct和count(*)的使用方法比较

發布時間:2023/12/16 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql distinct count_MySQL中distinct和count(*)的使用方法比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先對于MySQL的DISTINCT的關鍵字的一些用法:

1.在count 不重復的記錄的時候能用到,比如SELECT COUNT( DISTINCT id ) FROM tablename;就是計算talbebname表中id不同的記錄有多少條。

2,在需要返回記錄不同的id的具體值的時候可以用,比如SELECT DISTINCT id FROM tablename;返回talbebname表中不同的id的具體的值。

3.上面的情況2對于需要返回mysql表中2列以上的結果時會有歧義,比如SELECT DISTINCT id, type FROM tablename;實際上返回的是 id與type同時不相同的結果,也就是DISTINCT同時作用了兩個字段,必須得id與tyoe都相同的才被排除了,與我們期望的結果不一樣。

4.這時候可以考慮使用group_concat函數來進行排除,不過這個mysql函數是在mysql4.1以上才支持的。

5.其實還有另外一種解決方式,就是使用,SELECT id, type, count(DISTINCT id) FROM tablename,雖然這樣的返回結果多了一列無用的count數據(或許你就需要這個我說的無用數據),返回的結果是只有id不同的所有結果和上面的4類型可以互補使用,就是看你需要什么樣的數據了。

DISTINCT的效率:

SELECT id, type, count(DISTINCT id) FROM ?tablename;雖然這樣的返回結果多了一列無用的count數據(或許你就需要這個我說的無用數據),SELECT id, type from tablename group by id;這樣貌似也可以,用distinct的時候,如果它有索引,mysql會把它轉成group by的方式執行。

MySQL數據庫對于COUNT(*)的不同處理會造成不同的結果,比如,

執行:SELECT COUNT(*) FROM tablename;即使對于千萬級別的數據mysql也能非常迅速的返回結果。

執行: SELECT COUNT(*) FROM tablename WHERE…..;mysql的查詢時間開始攀升。

網上查資料得知:當沒有WHERE語句對于整個mysql的表進行count運算的時候,MyISAM類型的表中保存有總的行數,而當添加有WHERE限定語句的時候Mysql需要對整個表進行檢索,從而得出count的數值,因此加上where條件的查詢速度就會很慢了。

以上關于MySQL數據庫的distinct以及count(*)的使用就介紹到這里了,希望本次的介紹能夠帶給您一些收獲。

您可能感興趣的文章:Mysql中的count()與sum()區別詳細介紹MYSQL中統計查詢結果總行數的便捷方法省去count(*)mySQL count多個表的數據實例詳解關于mysql innodb count(*)速度慢的解決辦法詳細解讀MySQL中COUNT函數的用法mysql_num_rows VS COUNT 效率問題分析關于mysql中innodb的count優化問題分享淺析一個MYSQL語法(在查詢中使用count)的兼容性問題mysql中count(), group by, order by使用詳解MySQL中count(*)、count(1)和count(col)的區別匯總

總結

以上是生活随笔為你收集整理的mysql distinct count_MySQL中distinct和count(*)的使用方法比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。