【Tsql2008查询性能优化第一章---APPLY】于今腐草无萤火,终古垂杨有暮鸦。这篇文章主要讲述Tsql2008查询性能优化第一章---APPLY相关的知识,希望能为你提供帮助。
APPLY运算符涉及以下两个步骤中的一步或两步(取决于APPLY的类型):
1.A1把右表表达式应用于左表的行。
2.A2:添加外部行。
Apply运算符把右表表达式应用左输入中的每一行。右表表达式可以引用左输入中的列,对于左表中的每一行,都要计算一次右边输入的表达式。这一步会把左边的每一行和来自右表达式的相应行进行匹配,并将生成的结果集合并起来,返回组合后的结果。
Cross Apply和OUTER
APPLY总是包含步骤A1,只有OUT APPLY才包含步骤A2。
如果内部(右)表表达式为外部(左)行返回的是空集,则CROSS APPLY不会返回该外部(左)行。而OUTER APPLY会返回这样的行,对于内表表达式的属性,则使用NULL作为其占位符。
例:以下查询返回类别为汽车的两个表中的数据:
SELECT
p.[d_id] ,
p.[c_title] ,
p.[e_title] ,
p.[d_time] ,
a.d_title
FROM
[DingTai].[dbo].[D_News_Product] AS p
CROSS APPLY
( SELECT
c.d_id ,
d_title ,
c.d_time
FROM
dbo.D_Category AS c
WHERE
c.d_id = p.class_one
--ORDER BY
c.d_id DESC
) AS a
GO
------------------------返回结果---------------------
文章图片
*如果想返回不包含类为汽车的数据则用OUT APPLY: SELECT p.[d_id] , p.[c_title] , p.[e_title] , p.[d_time] , a.d_title FROM [DingTai].[dbo].[D_News_Product] AS p OUTER APPLY ( SELECT c.d_id , d_title , c.d_time FROM dbo.D_Category AS c WHERE c.d_id = p.class_one --ORDER BY c.d_id DESC ) AS a GO -----------------------结果------------------------------------------------------
文章图片
-----------补充单词知识------------------------------------------------------------
推荐阅读
- 安卓DatePickerDialog使用Butternife的@onTouch 注解
- DDD领域驱动设计实践 —— Application层实现
- Android开发实践(为什么要继承onMeasure())
- Android N 7classes.dex反编译失败(com.googlecode.d2j.DexException: not support version.)
- Android与MVC设计模式
- ASP.NET Core(使用Dapper和SwaggerUI来丰富你的系统框架)
- [BZOJ1710][Usaco2007 Open]Cheappal 廉价回文
- android中的Handler消息机制
- Android内存分析和调优(上)