LOOP | HASH | MERGE

指定查詢中的聯結應該使用迴圈、雜湊或合併。 使用 LOOP |HASH | MERGE JOIN 會在兩份資料表之間強制執行特定聯結。 您無法同時使用 RIGHT 或 FULL,將 LOOP 指定為聯結類型。

REMOTE

指定在右資料表上執行聯結作業。 當左資料表是本機資料表,右資料表是遠端資料表時,這非常有用。 只有在左資料表的資料列數比右資料表少時,才應該使用 REMOTE。

如果右資料表是本機資料表,則聯結會在本機執行。 如果兩份資料表都在遠端,但來自不同的資料來源,REMOTE 會以右資料表為基礎來執行聯結。 如果兩份資料表都是遠端資料表,且來自相同資料來源,就不需要 REMOTE。

當利用 COLLATE 子句將聯結述詞所比較的其中一個值轉換成不同的定序時,便不能使用 REMOTE。

REMOTE 只能用於 INNER JOIN 作業。

備註


聯結提示是在查詢的 FROM 子句中指定。 聯結提示會強制執行兩份資料表之間的聯結策略。 如果指定了兩份資料表的聯結提示,查詢最佳化工具會根據 ON 關鍵字的位置,自動強制執行查詢中所有聯結的資料表之聯結順序。 當使用不含 ON 子句的 CROSS JOIN 時,您可以用括號來指示聯結順序。

範例


A.使用 HASH

下列範例指定由 HASH 聯結來執行查詢中的 JOIN 作業。

複製
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

下列範例指定由 LOOP 聯結來執行查詢中的 JOIN 作業。

複製
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;
GO

C.使用 MERGE

下列範例指定由 MERGE 聯結來執行查詢中的 JOIN 作業。

複製
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

转载于:https://www.cnblogs.com/Nina-piaoye/archive/2012/06/01/2529465.html

SQl inner LOOP | HASH | MERGE join--指定Join的方法相关推荐

  1. mysql loop嵌套_MySQL中Nested-Loop Join算法小结

    数据库中JOIN操作的实现主要有三种:嵌套循环连接(Nested Loop Join),归并连接(Merge Join)和散列连接或者哈稀连接(Hash Join).其中嵌套循环连接又视情况又有两种变 ...

  2. SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)

    前言 本节我们开始讲讲这一系列性能比较的终极篇IN VS EXISTS VS JOIN的性能分析,前面系列有人一直在说场景不够,这里我们结合查询索引列.非索引列.查询小表.查询大表来综合分析,简短的内 ...

  3. SQL中的left outer join,inner join,right outer join用法 (左右内连接)

    SQL语句中的left outer join,inner join,right outer join用法 left outer join=left join ,   right outer join= ...

  4. HASH SEMI JOIN (semi join) 比 hash join 快!

    如果没有优化过几千几万个SQL,哪里能练出火眼金睛,注意看跑得慢的SQL是HASH JOIN,跑得快的SQL是 HASH JOIN RIGHT SEMI 也就是说跑得慢的SQL是 HASH JOIN( ...

  5. SQL之LEFT JOIN,EIGHT JOIN,INSERT JOIN的区别

    SQL之LEFT JOIN,EIGHT JOIN,INSERT JOIN的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包 ...

  6. SQL中的left outer join,inner join,right outer join用法详解

    SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同. 连接类型                                       ...

  7. sql基础知识left join,right join,inner join区别

    1.left join即以左表为主查出左边表对应的所有数据 <pre name="code" class="sql">select * from A ...

  8. SQL 中left join ,inner join,right join的区别

    2019独角兽企业重金招聘Python工程师标准>>> sql中存在有左连接  插入 右连接 sql语句 left join ,inner join,right join 进行 wh ...

  9. pandas使用pd.concat横向合并多个dataframe实战:多个dataframe的横向表拼接(行对齐)、多个dataframe的横向表拼接(指定join参数、交集还是并集)

    pandas使用pd.concat横向合并多个dataframe实战:多个dataframe的横向表拼接(行对齐).多个dataframe的横向表拼接(指定join参数.交集还是并集) 目录

最新文章

  1. 浅谈批处理获取管理员运行权限的几种方法
  2. python 函数的嵌套 和 作用域链
  3. CF643E Bear and Destroying Subtrees
  4. swift_014(Swift 的控制流)
  5. 3.6 激活函数-深度学习-Stanford吴恩达教授
  6. 网络架构之争:三大主流架构对决,谁是王者?深入思考CNN、Transformer与MLP
  7. numa节点_鲲鹏性能优化十板斧之前言 | 鲲鹏处理器NUMA简介与性能调优五步法
  8. bzoj 2756奇怪的游戏
  9. java上转型对象特点_Java 浅析三大特性之一继承
  10. python 类、模块、包的区别
  11. linux+cp+-rdf,简单构建基于RDF和SPARQL的KBQA(知识图谱问答系统)
  12. jdbc postgresql mysql_mysql改为postgresql 语法常见问题
  13. 用Entlib的配置程序块遇到的问题
  14. mysql升级mysql5.7.22记录
  15. qt_3_Qt开发环境
  16. MySQL的my.cnf详细配置说明
  17. 4.15Day20加密模块,表格操作模块
  18. 【微信数据迁移】微信数据怎么恢复到另一部手机
  19. ssl证书下载与安装 – 如何下载ssl证书
  20. 标签上的title属性和alt属性有什么区别

热门文章

  1. 跟我学XSL(二) -XSL的运算符
  2. 谈谈关于个人提升的一些思考
  3. 深度学习笔记二:PAC,PAC白化,ZCA白化
  4. 【正一专栏】内马尔请不要把球迷的爱当做你交易的筹码
  5. Leetcode 129. 求根到叶子节点数字之和 解题思路及C++实现
  6. CNN-RNN结合的3D物体识别分类
  7. [OpenCV] -- win7下配置OpenCV的Qt开发环境
  8. 使用ServletContext对象完成网页计数器
  9. Java的知识点16——数组概述和特点、数组声明、初始化、数组的遍历、for-each循环、数组的拷贝
  10. php取得文件的大小