自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

高級(jí)SQL優(yōu)化之分組字段順序優(yōu)化

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
如果一個(gè)查詢中既包含來(lái)自同一個(gè)表的排序字段也包含分組字段,但字段順序不同,可以通過(guò)調(diào)整分組字段順序,使其和排序字段順序一致,這樣數(shù)據(jù)庫(kù)可以避免一次排序操作。

注:本文所使用的執(zhí)行計(jì)劃可視化工具為 PawSQL Explain Visualizer , 支持MySQL、PostgreSQL、openGauss等數(shù)據(jù)庫(kù)執(zhí)行計(jì)劃的分析。

問(wèn)題定義

如果一個(gè)查詢中既包含來(lái)自同一個(gè)表的排序字段也包含分組字段,但字段順序不同,可以通過(guò)調(diào)整分組字段順序,使其和排序字段順序一致,這樣數(shù)據(jù)庫(kù)可以避免一次排序操作。

考慮以下兩個(gè)SQL, 二者唯一的不同點(diǎn)是分組字段的順序(第一個(gè)SQL是o_custkey, o_orderdate, 第二個(gè)SQL是o_orderdate, o_custkey),由于分組字段中不包括grouping set/cube/roll up等高級(jí)grouping操作,所以兩個(gè)SQL是等價(jià)的。但是二者的執(zhí)行計(jì)劃及執(zhí)行效率卻不一樣。第二個(gè)SQL的執(zhí)行計(jì)劃由于避免了對(duì)o_orderdate的一次排序操作,性能比第一個(gè)SQL要好,因此可以考慮將第一個(gè)SQL重寫(xiě)為第二個(gè)SQL。

select o_custkey, o_orderdate, sum(O_TOTALPRICE)
from orders
group by o_custkey,o_orderdate
order by o_orderdate;

重寫(xiě)為:

select o_custkey, o_orderdate, sum(o_totalprice)
from orders
group by o_orderdate,o_custkey
order by o_orderdate;

適用條件

分組字段重排序優(yōu)化是針對(duì)查詢塊(Queryblock)來(lái)進(jìn)行的,多個(gè)查詢塊可以獨(dú)立進(jìn)行此優(yōu)化。分組字段重排序優(yōu)化的適用條件如下:

  • 在一個(gè)查詢塊中存在2個(gè)及2個(gè)以上分組字段。
  • 在一個(gè)查詢塊中存在排序字段。
  • 分組及排序排序字段來(lái)自同一個(gè)數(shù)據(jù)表。
  • 分組排序字段無(wú)函數(shù)或計(jì)算。
  • 排序字段是分組字段的真子集。
  • 排序字段不是分組字段的前綴。

性能驗(yàn)證

  • 優(yōu)化前,在完成分組聚集運(yùn)算后,還需要進(jìn)行額外的排序操作,整體執(zhí)行時(shí)間為339.64ms,其中排序所占用的時(shí)間為58.1ms。

圖片

  • 重寫(xiě)優(yōu)化后,無(wú)需對(duì)分組聚集的結(jié)果進(jìn)行排序,整體執(zhí)行時(shí)間為139.28ms, 性能提升了143.8%,也無(wú)需占用額外的內(nèi)存。

圖片

PawSQL對(duì)此優(yōu)化的支持

  • 自動(dòng)優(yōu)化:PawSQL針對(duì)所有數(shù)據(jù)庫(kù)默認(rèn)開(kāi)啟此優(yōu)化,以上的SQL可以PawSQL可以自動(dòng)進(jìn)行優(yōu)化。

圖片

  • 啟用設(shè)置:用戶可以在自己的默認(rèn)優(yōu)化設(shè)置或是定義每個(gè)優(yōu)化任務(wù)的時(shí)候自主啟用或禁用該選項(xiàng)。

圖片

關(guān)于PawSQL

PawSQL專注數(shù)據(jù)庫(kù)性能優(yōu)化的自動(dòng)化和智能化,支持MySQL,PostgreSQL,openGauss,Oracle等數(shù)據(jù)庫(kù),提供的SQL優(yōu)化產(chǎn)品包括

  • PawSQL Cloud,在線自動(dòng)化SQL優(yōu)化工具,支持SQL審查,智能查詢重寫(xiě)、基于代價(jià)的索引推薦,適用于數(shù)據(jù)庫(kù)管理員及數(shù)據(jù)應(yīng)用開(kāi)發(fā)人員,
  • PawSQL Advisor,IntelliJ 插件, 適用于數(shù)據(jù)應(yīng)用開(kāi)發(fā)人員,可以IDEA/DataGrip應(yīng)用市場(chǎng)通過(guò)名稱搜索“PawSQL Advisor”安裝。
  • PawSQL Engine, 是PawSQL系列產(chǎn)品的后端優(yōu)化引擎,可以以docker鏡像的方式獨(dú)立安裝部署,并通過(guò)http/json的接口提供SQL優(yōu)化服務(wù)。
責(zé)任編輯:姜華 來(lái)源: PawSQL
相關(guān)推薦

2023-10-16 07:49:25

PawSQL數(shù)據(jù)庫(kù)

2023-10-09 07:42:49

PawSQL數(shù)據(jù)庫(kù)管理

2023-11-28 07:54:18

2023-10-23 09:19:47

PawSQL數(shù)據(jù)庫(kù)

2023-11-07 07:50:55

LIMIT子句下推優(yōu)化

2016-12-08 15:47:54

sql優(yōu)化數(shù)據(jù)

2018-01-09 16:56:32

數(shù)據(jù)庫(kù)OracleSQL優(yōu)化

2021-07-16 23:01:03

SQL索引性能

2011-03-31 11:14:51

Sql語(yǔ)句優(yōu)化

2016-12-14 19:04:16

Spark SQL優(yōu)化

2010-07-15 16:42:32

數(shù)據(jù)庫(kù)引擎

2021-07-26 18:23:23

SQL策略優(yōu)化

2019-03-27 14:11:20

工具性能數(shù)據(jù)

2018-03-30 14:30:10

數(shù)據(jù)庫(kù)SQL語(yǔ)句性能優(yōu)化

2011-09-16 13:15:38

SQL Server優(yōu)化

2022-03-10 11:25:51

InnoDB優(yōu)化

2022-07-14 14:46:51

數(shù)據(jù)庫(kù)SQL系統(tǒng)設(shè)計(jì)

2018-03-30 13:59:22

數(shù)據(jù)庫(kù)SQL語(yǔ)句性能優(yōu)化

2021-12-27 09:52:43

數(shù)據(jù)庫(kù)優(yōu)化SQL

2009-06-18 11:12:42

Hibernate S優(yōu)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)