最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年11月09日 11:01:08   投稿:lijiao  
這篇文章主要針對MySQL中distinct和count(*)的使用方法比較,對兩者之間的使用方法、效率進行了詳細分析,感興趣的小伙伴們可以參考一下

首先對于MySQL的DISTINCT的關(guān)鍵字的一些用法:

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

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

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

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

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

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

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

  執(zhí)行:SELECT COUNT(*) FROM tablename;即使對于千萬級別的數(shù)據(jù)mysql也能非常迅速的返回結(jié)果。 
  執(zhí)行: SELECT COUNT(*) FROM tablename WHERE…..;mysql的查詢時間開始攀升。 

網(wǎng)上查資料得知:當(dāng)沒有WHERE語句對于整個mysql的表進行count運算的時候,MyISAM類型的表中保存有總的行數(shù),而當(dāng)添加有WHERE限定語句的時候Mysql需要對整個表進行檢索,從而得出count的數(shù)值,因此加上where條件的查詢速度就會很慢了。
以上關(guān)于MySQL數(shù)據(jù)庫的distinct以及count(*)的使用就介紹到這里了,希望本次的介紹能夠帶給您一些收獲。

相關(guān)文章

最新評論

玛沁县| 垦利县| 嵩明县| 探索| 莱阳市| 永顺县| 凌海市| 宁蒗| 阜新| 西乌珠穆沁旗| 遵义县| 万荣县| 如皋市| 双牌县| 桦川县| 昌黎县| 区。| 清丰县| 清水河县| 宣武区| 筠连县| 平乡县| 曲麻莱县| 青岛市| 宁津县| 高雄市| 兰坪| 香港| 珲春市| 苍南县| 顺昌县| 库尔勒市| 五河县| 察雅县| 武鸣县| 大余县| 宜宾市| 色达县| 华坪县| 普宁市| 格尔木市|