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

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

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

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

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

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

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

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

SELECT DISTINCT category
FROM products;

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

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

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

SELECT category, supplier
FROM products
GROUP BY category;

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

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

SELECT DISTINCT category, supplier
FROM products;

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

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

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

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

附:distinct 和 group by 原理

在大多數(shù)例子中,DISTINCT可以被看作是特殊的GROUP BY,它們的實現(xià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。

總結

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

相關文章

  • MySQL數(shù)據(jù)庫實現(xiàn)高可用架構之MHA的實戰(zhàn)

    MySQL數(shù)據(jù)庫實現(xiàn)高可用架構之MHA的實戰(zhàn)

    本文主要介紹了MySQL數(shù)據(jù)庫實現(xiàn)高可用架構之MHA的實戰(zhàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Mysql跨表更新 多表update sql語句總結

    Mysql跨表更新 多表update sql語句總結

    Mysql跨表更新一直是大家所關心的話題,本文介紹mysql多表 update在實踐中幾種不同的寫法,需要的朋友可以參考下
    2012-12-12
  • mysql分配root賬號創(chuàng)建數(shù)據(jù)庫的權限的實現(xiàn)

    mysql分配root賬號創(chuàng)建數(shù)據(jù)庫的權限的實現(xiàn)

    root用戶通常具有所有的權限,本文主要介紹了mysql分配root賬號創(chuàng)建數(shù)據(jù)庫的權限的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • linux使用mysqldump+expect+crontab實現(xiàn)mysql周期冷備份思路詳解

    linux使用mysqldump+expect+crontab實現(xiàn)mysql周期冷備份思路詳解

    這篇文章主要介紹了linux使用mysqldump+expect+crontab實現(xiàn)mysql周期冷備份,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • MySQL添加索引的5種方式

    MySQL添加索引的5種方式

    在MySQL中索引(Index)是數(shù)據(jù)庫優(yōu)化的核心機制,它像書的目錄,幫助快速定位數(shù)據(jù),而非全表掃描,本詳解聚焦5種常見添加索引方式,基于官方手冊與Percona基準,這些方式覆蓋80%場景,需要的朋友可以參考下
    2026-03-03
  • MySQL 數(shù)據(jù)庫函數(shù)庫

    MySQL 數(shù)據(jù)庫函數(shù)庫

    MySQL 數(shù)據(jù)庫函數(shù)庫...
    2006-12-12
  • 深入聊聊MySQL中各種對象的大小長度限制

    深入聊聊MySQL中各種對象的大小長度限制

    在使用mysql的過程中總會遇到或大或小的問題,這篇文章主要給大家介紹了關于MySQL中各種對象的大小長度限制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友可以參考下
    2021-12-12
  • MySQL并發(fā)更新數(shù)據(jù)時的處理方法

    MySQL并發(fā)更新數(shù)據(jù)時的處理方法

    在后端開發(fā)中我們不可避免的會遇見MySQL數(shù)據(jù)并發(fā)更新的情況,作為一名后端研發(fā),如何解決這類問題也是必須要知道的,同時這也是面試中經(jīng)??疾斓闹R點。
    2019-05-05
  • 在JPA項目啟動時如何新增MySQL字段

    在JPA項目啟動時如何新增MySQL字段

    這篇文章主要介紹了在JPA項目啟動時新增MySQL字段,本來用了JPA,直接實體類加參數(shù)就可以新增字段了,但是架不住垃圾項目在啟動項目時會加載數(shù)據(jù)庫SQL文件去插入數(shù)據(jù),需要一些操作幫助修復,需要的朋友可以參考下
    2024-06-06
  • mysql中常用日期比較與計算函數(shù)

    mysql中常用日期比較與計算函數(shù)

    MYSQL數(shù)據(jù)庫中的日期比較與計算是經(jīng)常用到的,例如比較兩個日期大小,計算兩個日期相差多少天
    2018-03-03

最新評論

新晃| 灌南县| 玉环县| 会宁县| 东宁县| 青阳县| 吉首市| 潢川县| 邳州市| 河曲县| 江阴市| 西藏| 呈贡县| 龙海市| 容城县| 乌苏市| 沙坪坝区| 旬邑县| 桂林市| 桐乡市| 扎兰屯市| 额敏县| 常宁市| 突泉县| 益阳市| 台南市| 登封市| 山西省| 库尔勒市| 凤凰县| 葫芦岛市| 沾益县| 靖江市| 庆城县| 莱阳市| 托克逊县| 松阳县| 巴塘县| 灵石县| 六安市| 紫金县|