亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Partition By 子句可用于提高查詢(xún)性能。它降低了存儲(chǔ)需求,并提高了數(shù)據(jù)可管理性。通過(guò)對(duì)大表進(jìn)行分區(qū),可以更快地執(zhí)行僅訪問(wèn)一小部分?jǐn)?shù)據(jù)的查詢(xún)。分區(qū)還可以縮短備份和恢復(fù)時(shí)間。在本文中,我們將通過(guò)語(yǔ)法和各種示例討論 MySQL 中的 Partition By 子句。

簡(jiǎn)介

PARTITION BY 子句的目的是將表的行分組到單獨(dú)的分區(qū)中。當(dāng)使用同一分區(qū)中的其他行對(duì)分區(qū)內(nèi)的特定行執(zhí)行計(jì)算時(shí),這特別有用。

PARTITION BY 子句必須始終在 OVER() 子句中使用。 PARTITION BY 子句創(chuàng)建的分區(qū)也稱(chēng)為窗口。該子句專(zhuān)門(mén)對(duì) RANK()、LEAD() 和 LAG() 等窗口函數(shù)進(jìn)行操作。

如果從 OVER() 子句中排除 PARTITION BY 子句,則整個(gè)表將被視為單個(gè)分區(qū)。

語(yǔ)法

Window_function ( expression )
   Over ( partition by expr [order_clause] [frame_clause] )

登錄后復(fù)制

order_clause 和frame_clause 是語(yǔ)法的可選組件。

在 MySQL 中,Partition 子句中的表達(dá)式可以是列名,也可以是內(nèi)置函數(shù)。但是,在標(biāo)準(zhǔn) SQL 中,表達(dá)式中只允許使用列名稱(chēng)。

示例

讓我們以“Hacker”表為例 –

h_id

h_name

challenge_id

分?jǐn)?shù)

3

拉朱

111

20

2

密斯萊什

111

80

5

樓陀羅

112

40

5

莫漢

114

90

4

洛汗

112

30

1

索漢

112

40

我們需要確定每個(gè)挑戰(zhàn)中每個(gè)黑客的排名。換句話(huà)說(shuō),我們必須列出所有參與挑戰(zhàn)的黑客以及他們?cè)谠撎魬?zhàn)中各自的排名。

為了實(shí)現(xiàn)此目的,我們使用以下查詢(xún):

select challenge_id, h_id, h_name, score,
dense_rank() over ( partition by challenge_id order by score desc )
as "rank", from hacker;

登錄后復(fù)制

在此查詢(xún)中,partition by 子句按challenge_id 對(duì)表進(jìn)行分組。

order by 子句按照得分降序?qū)γ總€(gè)分區(qū)中的黑客進(jìn)行排序。

over() 子句指定如何對(duì)窗口函數(shù)rank() 的表行進(jìn)行分區(qū)和排序。

窗口函數(shù)dense_rank()為挑戰(zhàn)的有序分區(qū)中的每個(gè)黑客分配一個(gè)等級(jí)。如果兩個(gè)黑客得分相同,則他們被分配相同的排名。

結(jié)果輸出顯示所有黑客的列表以及他們?cè)诿總€(gè)挑戰(zhàn)中各自的排名 –

challenge_id

h_id

h_name

分?jǐn)?shù)

排名

111

2

密斯萊什

80

1

111

3

拉朱

20

2

112

樓陀羅

40

1

112

1

索漢

40

1

112

4

洛汗

30

2

114

5

莫漢

90

1

因此,我們成功獲得了所有黑客的列表以及他們?cè)诿總€(gè)單獨(dú)挑戰(zhàn)中的排名。

PARTITION BY 子句的使用

    將表的行分組到單獨(dú)的分區(qū)中,以便對(duì)分區(qū)內(nèi)的特定行執(zhí)行計(jì)算。

    降低存儲(chǔ)要求并提高數(shù)據(jù)可管理性。

    通過(guò)更快地執(zhí)行僅訪問(wèn)一小部分?jǐn)?shù)據(jù)的查詢(xún)來(lái)提高查詢(xún)性能。

    縮短備份和恢復(fù)時(shí)間。

    結(jié)論

    MySQL 中的 PARTITION BY 子句是一個(gè)有用的工具,用于將表的行分組到單獨(dú)的分區(qū)中,從而提高查詢(xún)性能并減少存儲(chǔ)需求。該子句專(zhuān)門(mén)對(duì) RANK()、LEAD() 和 LAG() 等窗口函數(shù)進(jìn)行操作。語(yǔ)法很簡(jiǎn)單,并且允許子句中使用的表達(dá)式類(lèi)型具有靈活性。上面的示例演示了 PARTITION BY 子句在計(jì)算每個(gè)客戶(hù)的銷(xiāo)售總額時(shí)的功能。通過(guò)利用這一強(qiáng)大的功能,用戶(hù)可以?xún)?yōu)化數(shù)據(jù)庫(kù)性能并提高數(shù)據(jù)可管理性。

    以上就是MySQL PARTITION BY 子句的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.92cms.cn其它相關(guān)文章!

分享到:
標(biāo)簽:MySQL partition 子句
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定