SQl inner LOOP | HASH | MERGE join--指定Join的方法
指定查詢中的聯(lián)結(jié)應(yīng)該使用迴圈、雜湊或合併。 使用 LOOP |HASH | MERGE JOIN 會在兩份資料表之間強制執(zhí)行特定聯(lián)結(jié)。 您無法同時使用 RIGHT 或 FULL,將 LOOP 指定為聯(lián)結(jié)類型。
指定在右資料表上執(zhí)行聯(lián)結(jié)作業(yè)。 當(dāng)左資料表是本機資料表,右資料表是遠端資料表時,這非常有用。 只有在左資料表的資料列數(shù)比右資料表少時,才應(yīng)該使用 REMOTE。
如果右資料表是本機資料表,則聯(lián)結(jié)會在本機執(zhí)行。 如果兩份資料表都在遠端,但來自不同的資料來源,REMOTE 會以右資料表為基礎(chǔ)來執(zhí)行聯(lián)結(jié)。 如果兩份資料表都是遠端資料表,且來自相同資料來源,就不需要 REMOTE。
當(dāng)利用 COLLATE 子句將聯(lián)結(jié)述詞所比較的其中一個值轉(zhuǎn)換成不同的定序時,便不能使用 REMOTE。
REMOTE 只能用於 INNER JOIN 作業(yè)。
聯(lián)結(jié)提示是在查詢的 FROM 子句中指定。 聯(lián)結(jié)提示會強制執(zhí)行兩份資料表之間的聯(lián)結(jié)策略。 如果指定了兩份資料表的聯(lián)結(jié)提示,查詢最佳化工具會根據(jù) ON 關(guān)鍵字的位置,自動強制執(zhí)行查詢中所有聯(lián)結(jié)的資料表之聯(lián)結(jié)順序。 當(dāng)使用不含 ON 子句的 CROSS JOIN 時,您可以用括號來指示聯(lián)結(jié)順序。
範(fàn)例A.使用 HASH
下列範(fàn)例指定由 HASH 聯(lián)結(jié)來執(zhí)行查詢中的 JOIN 作業(yè)。
複製 USE AdventureWorks2012; GO SELECT p.Name, pr.ProductReviewID FROM Production.Product AS p LEFT OUTER HASH JOIN Production.ProductReview AS pr ON p.ProductID = pr.ProductID ORDER BY ProductReviewID DESC;B.使用 LOOP
下列範(fàn)例指定由 LOOP 聯(lián)結(jié)來執(zhí)行查詢中的 JOIN 作業(yè)。
複製 USE AdventureWorks2012; GO DELETE FROM Sales.SalesPersonQuotaHistory FROM Sales.SalesPersonQuotaHistory AS spqhINNER LOOP JOIN Sales.SalesPerson AS spON spqh.SalesPersonID = sp.SalesPersonID WHERE sp.SalesYTD > 2500000.00; GOC.使用 MERGE
下列範(fàn)例指定由 MERGE 聯(lián)結(jié)來執(zhí)行查詢中的 JOIN 作業(yè)。
複製 USE AdventureWorks2012; GO SELECT poh.PurchaseOrderID, poh.OrderDate, pod.ProductID, pod.DueDate, poh.VendorID FROM Purchasing.PurchaseOrderHeader AS poh INNER MERGE JOIN Purchasing.PurchaseOrderDetail AS pod ON poh.PurchaseOrderID = pod.PurchaseOrderID; GO轉(zhuǎn)載于:https://www.cnblogs.com/Nina-piaoye/archive/2012/06/01/2529465.html
總結(jié)
以上是生活随笔為你收集整理的SQl inner LOOP | HASH | MERGE join--指定Join的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android画一个圆形图片组件
- 下一篇: fpga硬件驱动TFT液晶屏-小结