新聞中心
數(shù)據(jù)庫中的查詢改寫(Query Rewrite)是指將一個(gè) SQL 改寫成另外一個(gè)更加容易優(yōu)化的 SQL。

10年積累的成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有尼木免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
OceanBase 數(shù)據(jù)庫所支持的查詢改寫規(guī)則分為基于規(guī)則的查詢改寫和基于代價(jià)的查詢改寫。
基于規(guī)則的查詢改寫總是會(huì)把 SQL 往“好”的方向進(jìn)行改寫,從而增加該 SQL 的優(yōu)化空間。一個(gè)典型的基于規(guī)則的改寫是把子查詢改寫成聯(lián)接。如果不改寫,子查詢的執(zhí)行方式只能是 Nested Loop Join,改寫之后,優(yōu)化器就也可以考慮 Hash Join 和 Merge Join 的執(zhí)行方式。
基于代價(jià)的查詢改寫并不能總是把 SQL 往“好”的方向進(jìn)行改寫,需要使用代價(jià)模型來判斷。一個(gè)典型的基于代價(jià)的改寫就是 Or-Expansion。
在數(shù)據(jù)庫中,一個(gè)改寫規(guī)則通常需要滿足特定的條件才能夠?qū)崿F(xiàn),而且很多規(guī)則的改寫可以互相作用(一個(gè)規(guī)則的改寫會(huì)觸發(fā)另外一個(gè)規(guī)則的改寫)。OceanBase 數(shù)據(jù)庫把所有基于規(guī)則的查詢改寫分成若干個(gè)規(guī)則集合。對于每個(gè)規(guī)則集合,OceanBase 數(shù)據(jù)庫采用迭代的方式進(jìn)行改寫,一直到 SQL 不能被改寫為止或者迭代次數(shù)達(dá)到預(yù)先設(shè)定的閾值。類似地,對于基于代價(jià)的改寫規(guī)則也是采用這種方式處理。
這里需要注意的是,基于代價(jià)的改寫之后可能又會(huì)重新觸發(fā)基于規(guī)則的改寫,所以整體上的基于代價(jià)的改寫和基于規(guī)則的改寫也會(huì)采用這種迭代的方式進(jìn)行改寫。
分享題目:創(chuàng)新互聯(lián)OceanBase教程:OceanBase 查詢改寫概述
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/dpjeepo.html


咨詢
建站咨詢
