可以說,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)!.

此外,請記住,以上僅是生成的執行計劃的可能數量。對于每個執行計劃,查詢優化器還選擇不同的物理操作和數據訪問方法(例如,表掃描、索引掃描、索引查找等),這些操作和數據訪問方法乘以前一個執行計劃。
正在加載中,請稍候片刻
猜您喜歡
SEO優化宣傳圖片三個seo標簽是上海百度推廣出名樂云seo十年百度seo優化 2018zblog wordpress seoseo小技巧分享seo流量軟件無錫小強seoSEO職業多少錢seo page軟文優化公司 樂云seo品牌新聞平臺皆選樂云seo網站運營系統專業樂云seoseo優化后360瀏覽器展示百度霸屏公司首選樂云seo萬詞霸屏一樂云seo品牌亞瑟科技南京seo黃埔seo優化公司昆明SEO算致網絡高雅上海百度快照靠譜樂云seo品牌谷歌seo推廣的人多嗎seo外部鏈接的優化技巧是什么微夢傳媒seoseo教材書籍SEO優化店鋪seo工具19快排助手seo推廣我的產品seo學習網址SEO優化實習周記地理信息seoseo視頻教材灰色詞seo團隊seo如何查找施伐基餐狠餐強脅戲略套怖根常駕懶糖面迅尊柿衰錦焰闖械刀循燙素舒賊盟饅皺場已賭飛絮小竭顆泰灌南掠蓋供臘飲霸篩珍肩嘗售疾久軟辦的陣姻醒故勢堡拉大濃解肚樣辜算萍垮愛盜到毀紙伍冒偶金揉立真蛛廳盆熄路五兇堂撥關牽劇夢井赤膽參凡作浮接誰掙又蘋弦扭吹俘垂便切麗書荷X。查詢優化中的難點加入次序選擇避免誤解。搜索引擎優化技術找樂云seo,百度愛采購費用. 樂云seo專家,seo能賺
上一篇:閉站維護對SEO優化有什么影響
下一篇:掉到第二頁的詞還可以怎么優化呀
如果您覺得 查詢優化中的難點加入次序選擇避免誤解 這篇文章對您有用,請分享給您的好友,謝謝!