国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL中distinct和count(*)的使用方法比較

2020-01-18 22:44:03
字體:
來源:轉載
供稿:網友

首先對于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(*)的使用就介紹到這里了,希望本次的介紹能夠帶給您一些收獲。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘潭县| 安平县| 垦利县| 宁安市| 南城县| 茂名市| 安阳市| 东平县| 滁州市| 和顺县| 乐清市| 石狮市| 玉门市| 江山市| 彭泽县| 宜章县| 麟游县| 开远市| 本溪| 广南县| 和政县| 深州市| 兴义市| 安龙县| 连山| 阳朔县| 德令哈市| 宁陕县| 伊春市| 开阳县| 济源市| 友谊县| 定西市| 镇原县| 徐水县| 梁平县| 开江县| 七台河市| 博客| 陵水| 临高县|