tft每日頭條

 > 生活

 > sql拆分查詢

sql拆分查詢

生活 更新时间:2024-12-16 19:46:28

數據庫中的查詢改寫(Query Rewrite)把一個 SQL 改寫成另外一個更加容易優化的 SQL。OceanBase 數據庫的查詢改寫規則分為基于規則的查詢改寫和基于代價的查詢改寫。

基于規則的查詢改寫總是會把 SQL 往“好”的方向進行改寫,從而增加該 SQL 的優化空間。一個典型的基于規則的改寫是把子查詢改寫成連接,如果不改寫,子查詢的執行方式隻能是 NESTED LOOP JOIN。 但是改寫之後,優化器就也可以考慮 HASH JOIN 和 MERGE JOIN 的執行方式。

基于代價的查詢改寫并不能總是把 SQL 往“好”的方向進行改寫,所以需要代價模型來判斷。一個典型的基于規則的改寫就是 OR-EXPANSION。

在數據庫中,一個改寫規則通常需要滿足特定的條件才能夠進行改寫,而且很多規則的改寫可以互相作用(一個規則的改寫會觸發另外一個規則的改寫),所以在 OceanBase 數據庫中,把能夠互相作用的改寫規則組織成一個規則集合。因為一個規則集合中的規則可以互相作用,所以 OceanBase 數據庫采用叠代式的方式進行改寫一直到 SQL 不能被改寫為止或者叠代次數達到預先設定的阈值。

OceanBase 數據庫把所有基于規則的查詢改寫分成若幹個規則集合。對于每個規則集合,OceanBase 數據庫采用叠代式的方式進行改寫一直到 SQL 不能被改寫為止或者叠代次數達到預先設定的阈值。類似地,對于基于代價的改寫規則也是采用這種方式處理。這裡需要注意的是,基于代價的改寫之後可能又會重新觸發基于規則的改寫,所以整體上的基于代價的改寫和基于規則的改寫也會采用這種叠代式的方式進行改寫。

1、基于規則的查詢改寫

2、基于代價的查詢改寫

sql拆分查詢(SQL查詢改寫)1

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注