`
weimou66
  • 浏览: 1246957 次
文章分类
社区版块
存档分类
最新评论

T-SQL 表连接(内连接,外连接,交叉连接)

阅读更多

1.旧语法和新语法

旧语法由ANSI SQL-89引入的,它与新语法的区别在与没有JOIN关键字和ON子句:SELECT T1.*,T2.* FROM T1,T2 WHERE

新语法由ANSI SQL-92引入的,它引入了JOIN关键字,ON子句 SELECT T1.*,T2.* FROM T1 JOIN T2 ON <子句> WHERE

旧语法ANSI SQL-89只支持内连接和交叉连接,不支持外连接

2.交叉连接(CROSS JOIN)

我现在使用cross join来查询Employee 表的信息

查看执行计划

然后使用ANSI SQl-89旧语法来实现

查看执行计划

通过对比查询计划,它们二者之间性能完全一样,虽然这样但是我还是建议你使用新语法

1)出于安全性的考虑,刚才我们提到过旧语法不能使用外连接,在查询中我们同时使用旧语法,新语法是个不明智的选择

2)便于维护

交叉连接应用

操作Product 表

添加索引:

任务对于每个产品的价格占总价格,平均价格的百分比

下面使用子查询聚合查询

执行计划

从查询计划我们可以看出,刚才在price列上创建的索引被扫描了2次,一次用于SUM(),一次用于AVG(),如果没有包含聚合列的索引,需要为每个子查询扫描一次.

现在我们使用交叉连接来进行优化,我们可以在一个查询中计算所有的聚合,而且在查询中只需要对表,索引进行一次扫描

查看执行计划

执行计划我们可以看出,price列上的索引指被扫描了一次,通过一次扫描计算两个聚合函数.从而优化了查询效率.

分享到:
评论

相关推荐

    (第一卷)Microsoft.SQL.Server.2008技术内幕:T-SQL语言基础

    主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。  书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...

    (第二卷)Microsoft SQL Server 2008技术内幕:T-SQL语言基础

    主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。  书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...

    T-SQL高级查询

    ) t where t.id &gt; 2; 上面括号中的语句,就是子查询语句(内部查询)。在外面的是外部查询,其中外部查询可以包含以下语句: 1、 包含常规选择列表组件的常规select查询 2、 包含一个或多个表或视图名称的常规...

    经典SQL脚本大全

    │ 统计--交叉表+日期+优先.sql │ ├─第03章 │ │ 3.2 各种字符串分拆处理函数.sql │ │ 3.3 各种字符串合并处理示例.sql │ │ 3.4.1 分段截取函数.sql │ │ 3.4.2 分段更新函数.sql │ │ 3.4.3 IP地址处理...

    21天学会SQL

    11.2.6 交叉连接查询 230 11.2.7 连接查询中使用聚合函数 232 11.2.8 高级连接查询实例 233 11.3 组合查询 235 11.3.1 使用组合查询 236 11.3.2 使用UNION的规则 237 11.3.3 使用UNION得到复杂的统计 汇总样式 238 ...

    SQL语句集锦.rar

    工作中常用的SQL + 超复杂SQL 交叉连接查询corss.txt 公交线路问题.txt 。。。。 充储过程--sql0.sql 分割字符串.txt 分布式查询.txt 分组排列进行更新.txt 别名.txt 动态SQL语句.txt 动态语句.txt 区分大小写.txt ...

    Sqlserver2000经典脚本

    │ │ └─其他 │ 交叉表--复杂名次.sql │ 交叉表-优先级处理.sql │ 交叉表分析.sql │ 分级汇总.sql │ 分组交叉表.sql │ 列转行.sql │ 固定行列报表.sql │ 复杂交叉...

    精通sql结构化查询语句

    9.4 外连接 9.4.1 左外连接 9.4.2 右外连接 9.4.3 全外连接 9.4.4 在外连接中使用聚合函数 9.5 交叉连接 9.5.l 交叉连接的定义 9.5.2 交叉连接举例 9.6 多表连接的综合应用 9.6.1 内连接与左外连接的综合应用 ...

    SQL Server 2008编程入门经典(第3版)

    4.6.3 交叉连接的早期语法结构 4.7 联合 4.8 本章小结 4.9 练习 第5章 创建和修改数据表 5.1 SQLserver中的对象名 5.1.1 模式名 5.1.2 数据库名 5.1.3 通过服务器命名 5.1.4 回顾默认值 5.2 CReATE语句 5.2.1 ...

    SQL.Server.2008编程入门经典(第3版).part2.rar

    4.6.3 交叉连接的早期语法结构 4.7 联合 4.8 本章小结 4.9 练习 第5章 创建和修改数据表 5.1 SQLserver中的对象名 5.1.1 模式名 5.1.2 数据库名 5.1.3 通过服务器命名 5.1.4 回顾默认值 5.2 CReATE语句 5.2.1 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     数据查询语言 (Data Query Language, DQL) 是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。例如:SELECT(查询)  数据控制语言Data Controlling Language(DCL),用来...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    4.6.3 交叉连接的早期语法结构 4.7 联合 4.8 本章小结 4.9 练习 第5章 创建和修改数据表 5.1 SQLserver中的对象名 5.1.1 模式名 5.1.2 数据库名 5.1.3 通过服务器命名 5.1.4 回顾默认值 5.2 CReATE语句 5.2.1 ...

    sqlserver2000基础(高手也有用)

    15.1.3 测试连接到SQL Server实例的方法总结 458 15.1.4 超时 459 15.1.5 单用户的问题 460 15.1.6 默认数据库问题 461 15.2 索引中的疑难解答 462 15.2.1 索引对查询条件的影响 462 15.2.2 索引对查询...

    SQLServer2008查询性能优化 2/2

    实施修复甚至预防性能问题的T-SQL最佳实践 《SQL Server 2008查询性能优化》不是理论书籍,它的目的是帮助你避免数据库出现性能低下的状况,它还能帮助你保住你的工作。 内容提要 《SQL Server 2008查询性能优化...

    SQLServer2008查询性能优化 1/2

    实施修复甚至预防性能问题的T-SQL最佳实践 《SQL Server 2008查询性能优化》不是理论书籍,它的目的是帮助你避免数据库出现性能低下的状况,它还能帮助你保住你的工作。 内容提要 《SQL Server 2008查询性能优化...

    mysql数据库的基本操作语法

    唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。 MySQL会给唯一约束的列上默认创建一个唯一索引; create table temp ( id int not null, name varchar(25), password varchar(16), --使用表级...

Global site tag (gtag.js) - Google Analytics