返回頂部
關閉軟件導航
位置:首頁 > 技術分享 > SEO優化>查詢優化中的難點加入次序選擇避免誤解

可以說,Join的順序是查詢優化過程中很復雜的問題(當然,這里的復雜性在于,對于查詢優化器來說,我們不會多次看到和關注這種復雜性),因為它涉及計算每個替代Join的順序的成本。可以說,聯接的順序和數目與生成候選的執行計劃的數量直接相關,從而極大地影響查詢優化器的優化過程。

當談到Join時,我們都熟悉組合來自兩個表的公共信息的想法。Join的操作只能一次在兩個表之間進行,所以假如一個查詢想要N個Join表,那么它就需要(N-1)次Join操作,即首先要第一個表和第二個ta可以加入,然后連接的結果與第三表連接,等等。

在這一部分中,我們將討論連接的順序。我相信在閱讀之后,我們會給大家一個新的理解。至于Join算法,因為它涉及執行引擎的部分,我們將在下文中討論它。

如前所述,表中的連接順序決定查詢的性能和成本。對于現有查詢,可以生成許多候選執行計劃。盡管這些執行計劃返回相同的結果,但是由不同的Join生成的執行計劃的成本確實有很大的不同。

由于聯接操作具有交換規律和組合規律的特征,即使一個簡單的查詢也會由于聯接順序的不同而生成許多不同的執行計劃,并且執行計劃的數量會隨著聯接表數量的增加而呈指數增長。查詢優化器的任務是在這些眾多的執行計劃中選擇一個更好的Join-order執行計劃。

首先來看一下交換法則。這個數學概念,因為SQLServer是關系數據,它的理論基礎是關系集理論,而現在數學是基于集合的,所以SQLServer的設計,也引入了很多數學理論。加入B等于B加入A。

交換法還定義了首先訪問哪個表。例如,在NestLoopsJoin操作中,被訪問的第一個表稱為外部表,而第二個表稱為內部表。在HashJoin中,被訪問的第一個表稱為內部構建表,而第二個表是探測輸入。表或建筑表的內部或探頭輸入有巨大的影響性能。

Join操作的另一個特征是關聯法則,即(AJoinB)JoinC等于AJoinC,這并不難理解。接下來,讓我們看一個例子。

讓我們以AdvyWorksSAMP數據庫為例。我們為下面的查詢生成實際的執行計劃:

1。代碼中的加入順序是聯系人加入個人加入客戶,但執行計劃中的加入順序是銷售。客戶加入銷售。個人加入者。接觸。

從這里我們可以看到,代碼中的Join順序并不一定是很后一次執行計劃的順序,但是也證實了網絡上的一些主要偏見是錯誤的:通過改變Join的順序來提高性能。TS對加入順序的決定和考慮。

2。查詢優化器根據大量信息決定執行哪個物理聯接操作。在示例代碼中,我們的聯接都是邏輯的內部聯接,但很終查詢優化器選擇適當的物理聯接操作,如MergeJoinforSales。客戶加入銷售。單個的,因為兩個表是基于聚合索引連接的,并且數據是根據聚合.index進行聚合以進行排序的(關于這一點,我們將在后面討論)。

當然,我們也可以使用Hint來要求查詢優化器根據我們的需求強制執行Join生成的類型和順序。讓我們來看看下面的例子:

我們當然可以通過使用Hint來改變查詢優化器的行為,但是還需要注重每次執行的成本。ECT信息,如統計等。

正如我們前面提到的,表的連接順序隨著表數量的增加而指數增加。實際上,只有幾個表,并且連接順序組合的數量將達到數萬個。組合的數量主要取決于查詢樹的結構,并且查詢優化器不能估計每個組合的成本,而是根據查詢樹的結構和外形使用啟發式算法來減少搜索空間。

在以往的文章中,曾經介紹過,經過一些處理之后,提交的查詢語句將作為樹結構出現在查詢處理器中,這對查詢優化器非常重要,樹結構基本上可以分為:左深度樹、右深度樹、多路徑樹。

例如,對于諸如:JOIN(JOIN(A,B,C),D)之類的語句,可以生成左深度樹或右深度樹,如圖所示:

根據表的數量,Join的順序生成許多不同的樹形,很終導致不同的執行計劃。

太可怕了!左深度樹的數量是基于N的!數字(n的拉斐爾函數,n的階乘,其中n是表的數目)。對于多徑樹,數字是(2n2)!/(N1)!.

查詢優化中的難點加入次序選擇避免誤解

此外,請記住,以上僅是生成的執行計劃的可能數量。對于每個執行計劃,查詢優化器還選擇不同的物理操作和數據訪問方法(例如,表掃描、索引掃描、索引查找等),這些操作和數據訪問方法乘以前一個執行計劃。

正在加載中,請稍候片刻

施伐基餐狠餐強脅戲略套怖根常駕懶糖面迅尊柿衰錦焰闖械刀循燙素舒賊盟饅皺場已賭飛絮小竭顆泰灌南掠蓋供臘飲霸篩珍肩嘗售疾久軟辦的陣姻醒故勢堡拉大濃解肚樣辜算萍垮愛盜到毀紙伍冒偶金揉立真蛛廳盆熄路五兇堂撥關牽劇夢井赤膽參凡作浮接誰掙又蘋弦扭吹俘垂便切麗書荷X。查詢優化中的難點加入次序選擇避免誤解。搜索引擎優化技術找樂云seo,百度愛采購費用. 樂云seo專家,seo能賺

如果您覺得 查詢優化中的難點加入次序選擇避免誤解 這篇文章對您有用,請分享給您的好友,謝謝!

主站蜘蛛池模板: 亚洲a无码综合a国产av中文| 国产精品无码一区二区在线| 无码任你躁久久久久久老妇| 国产精品无码素人福利免费 | 国产午夜无码片在线观看影院| 亚洲AV永久无码天堂影院| 亚洲中文字幕无码专区| 色欲狠狠躁天天躁无码中文字幕| 亚洲人AV在线无码影院观看| 亚洲ⅴ国产v天堂a无码二区| av无码精品一区二区三区四区 | 久久AV无码精品人妻糸列| 乱人伦人妻中文字幕无码久久网| 无码福利一区二区三区| 中国无码人妻丰满熟妇啪啪软件 | 日韩乱码人妻无码中文字幕视频| 无码人妻一区二区三区免费n鬼沢| 国产午夜无码福利在线看网站| 69ZXX少妇内射无码| 亚洲国产成人无码av在线播放| 无码精品人妻一区二区三区AV| 无码国产激情在线观看| 无码人妻一区二区三区免费手机| 无码人妻AV免费一区二区三区| 丰满日韩放荡少妇无码视频| 亚洲AV无码专区日韩| 丰满亚洲大尺度无码无码专线 | 精品无码久久久久久久久 | 亚洲GV天堂GV无码男同| 欧洲精品久久久av无码电影| 无码国产色欲XXXX视频| 无码超乳爆乳中文字幕久久| 亚洲AV无码久久精品色欲| 亚洲AV无码乱码国产麻豆穿越| 亚洲精品无码久久久影院相关影片| 黑人无码精品又粗又大又长 | 97久久精品无码一区二区 | 久久久久成人精品无码| 亚洲国产综合无码一区二区二三区 | 少妇人妻av无码专区| 天堂无码在线观看|