连接、关联、JOIN、APPLY(SQL Server)
|
连接方式 |
连接类型 |
个人总结 |
阐述(生成两个集合的约束笛卡儿积) |
|
INNER JOIN |
内连接 |
关联相同的(用于查找关联的信息) |
FROM C AS c INNER JOIN D AS d ON c.xx = d.xx |
|
LEFT JOIN |
左连接 |
左面全保留(可以用来查找左面多余的,右面为NULL) |
FROM C AS c LEFT OUTER JOIN D AS d ON c.xx = d.xx |
|
RIGHT JOIN |
右连接 |
右面全保留(可以用来查找右面多余的,左面为NULL) |
FROM C AS c RIGHT OUTER JOIN D AS d ON c.xx = d.xx |
|
FULL JOIN |
完全连接 |
显示左右关联上和左右关联不上的,关联不上为NULL |
FROM C AS c FULL OUTER JOIN D AS d ON c.xx = d.xx |
|
CROSS JOIN |
交叉连接 |
左右互相1对全部连接 |
FROM C AS c CROSS JOIN D as d |
|
|
|
延伸学习 |
关于EXCEPT和INTERSECT的用法 |
|
EXCEPT |
也是去重的, 但是它在去掉两个或多个集合中重复数据之后, 只会保留第一个结果集中的数据 |
|
INTERSECT |
就是查询两个结果集的并集, 利用上面的数据 |
|
学习地址 |
物理连接 |
Nested Loops Join(嵌套循环连接) |
Merge Join(合并连接) |
Hash Join(哈希连接) |
| 最适合于 | 相对较小的两个数据集, inner table在做Join的字段上有一个索引 |
输入数据集大小中等或较大, 且在Join字段上有索引帮助排序, 或者语句要求返回一个排好序的结果集 |
输入数据集较大。 尤其适合于Data warehouse 环境下的那些复杂的查询语句 |
| 并发性 | 能够支持大量的并发用户同时运行 | 有索引支持的Many-to-one的join并发性较好, Many-To-Many的就差了 |
最好同时只有少数用户在同时运行 |
| Join时要否两个字段相等 | 不要 | 要(除非是full outer join) | 要 |
| 要否使用内存资源 | 不使用 | 不使用(如果要为Merge Join做排序,可能要使用) | 使用 |
| 要否使用tempdb | 不使用 | many-to-many join要使用 | 使用 |
| 输入数据集要否排序 | 不要 | 要 | 不要 |
| 希望输入数据集排序否 | 希望outer input是排序的 | 是的 | 不要 |
| 学习地址 | http://www.cnblogs.com/CareySon/archive/2013/01/09/2853094.html |
| APPLY | 使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入。通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。APPLY 运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。 |
| 学习地址 | https://technet.microsoft.com/zh-cn/library/ms175156(v=sql.105).aspx |
| http://blog.csdn.net/ylqmf/article/details/5316694 | |
| http://www.cnblogs.com/yukaizhao/archive/2008/04/30/cross_apply.html |
连接、关联、JOIN、APPLY(SQL Server)的更多相关文章
- INNER JOIN与LEFT JOIN在SQL Server的性能
我创建了INNER JOIN 9桌,反正需要很长的(超过五分钟).所以,我的民歌改变INNER JOIN来LEFT JOIN LEFT JOIN的性能较好,在首次尽管我所知道的.之后我变了,查询的速度 ...
- 问题:sqlserver 跨服务器连接;结果:Sql Server 跨服务器连接
Sql Server 跨服务器连接 用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset ...
- SQL Server 无法连接到服务器。SQL Server 复制需要有实际的服务器名称才能连接到服务器。请指定实际的服务器名称。
异常处理汇总-数据库系列 http://www.cnblogs.com/dunitian/p/4522990.html SQL性能优化汇总篇:http://www.cnblogs.com/dunit ...
- com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性。确保 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接。”
检查SQL Server Configuration Manager 确定实例名为"SKYSQLEXPRESS"下的TCP/IP已经开启了: sql2014配置(系统为Window ...
- 使用 cmd连接 Oracle,MySql,SQL Server 数据库
1. Oracle cmd连接数据库 语法: sqlplus 用户/口令(密码)@服务器IP/数据库实例名(SID) 1.1 方式一 数据库服务在本机上IP可以用localhost替换 sqlplus ...
- FineReport9.0定义数据连接(创建与SQL Server 2016数据库的连接)
1.下载并安装好FineReport9.0和SQL Server 2016 2.开始——>所有应用——>Microsoft SQL Server 2016——>SQL Server ...
- How to Delete using INNER JOIN with SQL Server?
https://stackoverflow.com/questions/16481379/how-to-delete-using-inner-join-with-sql-server You need ...
- 如何远程连接非默认端口SQL Server
SQL Server Management Studio建立远程SQL连接 连接的时候写: 127.0.0.1,49685\sqlexpress 记得使用逗号,不是冒号
- .net core连接Liunx上MS SQL Server
场景 由于业务要求,需要对甲方的一个在SQL Server上的财务表进行插入操作.研究了半天,因为一个小问题折腾了很久. 过程 .net core端: 1. 利用EF,就需要的导入相关的Nuget包, ...
- sql连接错误(Microsoft SQL Server,错误:2)
昨天用SQL语句建表的时候写了一段代码,对于代码的逻辑和内容我不太肯定对不正确.反正是毫不犹豫的让它运行了,过程中出现好几个错误,当时没有太在意,想着大不了出错了再重写一个.结果--玩坏了,从昨天到如 ...
随机推荐
- 10 - 删除vtkDataObject中的Update Extent方法 VTK 6.0 迁移
VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.下面列出来的就是其中的一些方法: SetUpdateExtent(int piece, int numPi ...
- Solr4.8.0源码分析(8)之Lucene的索引文件(1)
Solr4.8.0源码分析(8)之Lucene的索引文件(1) 题记:最近有幸看到觉先大神的Lucene的博客,感觉自己之前学习的以及工作的太为肤浅,所以决定先跟随觉先大神的博客学习下Lucene的原 ...
- Growing Pains for Deep Learning
Growing Pains for Deep Learning Advances in theory and computer hardware have allowed neural network ...
- 【字典树】【贪心】Codeforces 706D Vasiliy's Multiset
题目链接: http://codeforces.com/contest/706/problem/D 题目大意: 三种操作,1.添加一个数,2.删除一个数,3.查询现有数中与x异或最大值.(可重复) 题 ...
- javascript正则表达式(二)——方法
正则表达式规则见:http://www.cnblogs.com/wishyouhappy/p/3756812.html,下面说明相关方法 String相关方法 概括: search() replace ...
- loadrunner11 录制脚步不成功,在录制概要出现“No Events were detected”,浮动窗口总是显示“0 Events”,解决办法
打开ie浏览器,菜单栏上的工具----Internet选项---高级选项卡,去掉勾选“启用第三方浏览器扩展”,重启ie即可,重新录制脚本就可以成功. 刚刚开始以为自己解决不了这个问题,还想怎么办呢?一 ...
- Java---常用基础面试知识点
综合网上的一点资源,给大家整理了一些Java常用的基础面试知识点,希望能帮助到刚开始学习或正在学习的学员. 1.抽象 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方 ...
- Nginx+Keepalived主备切换(包含nginx服务停止)
原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4 ...
- JDK 高性能编程之容器
高性能编程在对不同场景下对于容器的选择有着非常苛刻的条件,这里记录下前人总结的经验,并对源码进行调试 JDK高性能编程之容器 读书笔记内容部分来源书籍深入理解JVM.互联网等 先放一个类图util,点 ...
- C#中枚举类型和int类型的转化
先定义一个枚举类型 , 初中, 高中,大学 }; int ->enum int d=2; PropertyType a=(PropertyType)d; int <- enum Prop ...
