欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql中distinct和group?by的區(qū)別淺析

 更新時間:2023年05月29日 09:50:35   作者:liulanba  
distinct簡單來說就是用來去重的,而group by的設(shè)計目的則是用來聚合統(tǒng)計的,兩者在能夠?qū)崿F(xiàn)的功能上有些相同之處,但應(yīng)該仔細區(qū)分,下面這篇文章主要給大家介紹了關(guān)于mysql中distinct和group?by區(qū)別的相關(guān)資料,需要的朋友可以參考下

GROUP BY 和 DISTINCT 都是用于從數(shù)據(jù)庫中選擇唯一值的 SQL 子句。它們之間的主要區(qū)別在于它們的作用方式和應(yīng)用場景。

GROUP BY 語句用于將數(shù)據(jù)按照一個或多個列進行分組,然后對每個組應(yīng)用一個聚合函數(shù)(如 COUNT、SUM、AVG 等)以得到每個組的統(tǒng)計結(jié)果。GROUP BY 通常用于在查詢中生成匯總信息。例如:

SELECT category, COUNT(*) AS count
FROM products
GROUP BY category;

以上查詢會按照商品類別將數(shù)據(jù)分組,并統(tǒng)計每個類別的商品數(shù)量。

DISTINCT 語句用于從查詢結(jié)果中選擇唯一的值。它可以用于從一個或多個列中選擇唯一的值,也可以用于選擇整行的唯一值。例如:

SELECT DISTINCT category
FROM products;

以上查詢會返回所有不同的商品類別。

總的來說,GROUP BY 用于對數(shù)據(jù)進行分組和聚合操作,DISTINCT 則用于選擇唯一的值。GROUP BY 通常用于在查詢中生成匯總信息,而 DISTINCT 則用于選擇不同的值以進行數(shù)據(jù)清理或統(tǒng)計。

此外,GROUP BY 通常會產(chǎn)生比 DISTINCT 更多的結(jié)果,因為它按照指定的列進行分組,而每個分組內(nèi)可能包含多個不同的值。例如,在以下查詢中:

SELECT category, supplier
FROM products
GROUP BY category;

結(jié)果會按照商品類別分組,并且對于每個類別,會返回該類別下的任意一條記錄中的供應(yīng)商信息。這意味著如果一個類別下有多個供應(yīng)商,那么在結(jié)果中會出現(xiàn)多條記錄,而這些記錄的商品類別相同但供應(yīng)商不同。

與之相比,以下查詢使用 DISTINCT 選擇了不同的商品類別和供應(yīng)商:

SELECT DISTINCT category, supplier
FROM products;

在這種情況下,每個組合(商品類別和供應(yīng)商)只會出現(xiàn)一次。

需要注意的是,GROUP BY 和 DISTINCT 都會對查詢的性能產(chǎn)生一定的影響。GROUP BY 可能會需要對數(shù)據(jù)進行排序和分組操作,而這些操作需要消耗更多的 CPU 和內(nèi)存資源。因此,在使用 GROUP BY 時需要謹(jǐn)慎,盡可能選擇合適的索引和優(yōu)化查詢語句,以減少查詢的時間和資源消耗。而 DISTINCT 則通常比 GROUP BY 更快,因為它只需要對結(jié)果集進行唯一化處理即可。

有索引的情況下:group by和distinct都能使用索引,效率相同。

無索引的情況下:distinct效率高于group by,因為GROUP BY 可能會需要對數(shù)據(jù)進行排序和分組操作。

附:distinct 和 group by 原理

在大多數(shù)例子中,DISTINCT可以被看作是特殊的GROUP BY,它們的實現(xiàn)都基于分組操作,且都可以通過松散索引掃描、緊湊索引掃描(關(guān)于索引掃描的內(nèi)容會在其他文章中詳細介紹,就不在此細致介紹了)來實現(xiàn)。

DISTINCT和GROUP BY都是可以使用索引進行掃描搜索的。例如以下兩條 sql(只單單看表格最后 extra 的內(nèi)容),我們對這兩條 sql 進行分析,可以看到,在 extra 中,這兩條 sql 都使用了緊湊索引掃描Using index for group-by。

所以,在一般情況下,對于相同語義的DISTINCT和GROUP BY語句,我們可以對其使用相同的索引優(yōu)化手段來進行優(yōu)化。

但對于GROUP BY來說,在 MYSQL8.0 之前,GROUP Y默認會依據(jù)字段進行隱式排序。

可以看到,下面這條 sql 語句在使用了臨時表的同時,還進行了 filesort。

總結(jié)

到此這篇關(guān)于mysql中distinct和group by區(qū)別淺析的文章就介紹到這了,更多相關(guān)mysql distinct和group by區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL?優(yōu)化?index?merge引起的死鎖分析

    MySQL?優(yōu)化?index?merge引起的死鎖分析

    這篇文章主要介紹了MySQL?優(yōu)化?index?merge引起的死鎖分析,MySQL通過優(yōu)化索引合并是遇到的死鎖問題,下面具體分析需要的小伙伴可以參考一下
    2022-04-04
  • MySQL切分查詢用法分析

    MySQL切分查詢用法分析

    這篇文章主要介紹了MySQL切分查詢用法,結(jié)合實例形式分析了通過do while語句進行切分查詢的具體實現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • SQL語句中EXISTS的詳細用法大全

    SQL語句中EXISTS的詳細用法大全

    最近重新用到了exists關(guān)鍵字,對于其基本用法記錄一下,下面這篇文章主要給大家介紹了關(guān)于SQL語句中EXISTS的詳細用法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • MySQL的binlog日志使用詳解

    MySQL的binlog日志使用詳解

    這篇文章主要介紹了MySQL的binlog日志使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL中字符串索引對update的影響分析

    MySQL中字符串索引對update的影響分析

    這篇文章主要介紹了MySQL中字符串索引對update的影響,結(jié)合實例形式分析了添加索引操作對于update語句的性能所造成的影響,需要的朋友可以參考下
    2016-04-04
  • 快速解決mysql深分頁問題

    快速解決mysql深分頁問題

    這篇文章主要介紹了優(yōu)雅地解決mysql深分頁問題,本文將會討論當(dāng)mysql表大數(shù)據(jù)量的情況,如何優(yōu)化深分頁問題,并附上最近的優(yōu)化慢sql問題的案例偽代碼,需要的朋友可以參考下
    2022-07-07
  • 解決MySQL server has gone away錯誤的方案

    解決MySQL server has gone away錯誤的方案

    在本篇文章里小編給大家分享的是一篇關(guān)于MySQL server has gone away錯誤的解決辦法,有需要的朋友們可以參考下。
    2020-02-02
  • mysql分表之后如何平滑上線詳解

    mysql分表之后如何平滑上線詳解

    項目開發(fā)中,我們的數(shù)據(jù)庫數(shù)據(jù)越來越大,隨之而來的是單個表中數(shù)據(jù)太多,以至于查詢書讀變慢,當(dāng)出現(xiàn)這種情況時,我們可以考慮分表,這篇文章主要給大家介紹了關(guān)于mysql分表之后如何平滑上線的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 深度解析MySQL 5.7之臨時表空間

    深度解析MySQL 5.7之臨時表空間

    盡管臨時表在實際在線場景中很少會去顯式使用,但在某些運維場景還是需要到的,在MySQL5.7中,專門針對臨時表做了些優(yōu)化,下面這篇文章我們來一起深入的解析MySQL 5.7之臨時表空間,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • mysql實現(xiàn)將date字段默認值設(shè)置為CURRENT_DATE

    mysql實現(xiàn)將date字段默認值設(shè)置為CURRENT_DATE

    這篇文章主要介紹了mysql實現(xiàn)將date字段默認值設(shè)置為CURRENT_DATE問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論