返回頂部
關閉軟件導航
位置:首頁 > 技術分享 > 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Ⅴ片在线观看| 国产婷婷成人久久av免费高清| 久久精品国产成人| 国产成人综合久久久久久| 亚洲国产精品成人久久| 国产成人性色视频| 国产精品成人不卡在线观看| 国产成人综合久久精品尤物| 成人午夜精品无码区久久| 在线观看国产精成人品| 欧美成人精品高清在线观看| 国产成人精品免高潮在线观看 | 午夜成人在线视频| 国产成人h在线视频| 亚洲国产成人久久一区www| 中文国产成人精品少久久| 欧美国产成人精品一区二区三区| 成人精品一区二区三区中文字幕 | 成人性生话视频| 成人H动漫精品一区二区| 国产成人亚综合91精品首页| 四虎国产成人永久精品免费| 欧美成人另类人妖| 国产成人免费午夜在线观看| 亚洲国产精品无码成人片久久 | 无码国产成人av在线播放| 国产成人精品福利色多多| 久久伊人成人网| 国产成人教育视频在线观看| 成人免费在线视频网站| 在线观看成人网站| 国产精品成人久久久久久久| 国产成人免费电影| 欧美成人免费一区二区| 好男人社区成人影院在线观看| 国产成人精品2021| 天天成人综合网| 成人a在线观看| 午夜亚洲国产成人不卡在线|