MySQL中distinct和count(*)的應用辦法比擬。本站提示廣大學習愛好者:(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(*)的應用就引見到這裡了,願望本次的引見可以或許帶給您一些收成。