什么时候应该在内部连接上使用交叉应用?使用的主要目的是什么?交叉应用?我(隐约地,通过互联网上的帖子)读到cross apply如果要进行分区,则在对大型数据集进行选择时,效率可能更高。(想到寻呼)我也知道CROSS APPLY 不需要将udf作为正确的表。在大多数INNER JOIN查询(一对多的关系),我可以重写它们以使用CROSS APPLY但他们总是给我同等的执行计划。谁能给我举个很好的例子CROSS APPLY在那些情况下INNER JOIN也会起作用吗?编辑:下面是一个简单的例子,其中的执行计划是完全相同的。(给我看看它们的不同之处cross apply更快/更有效率)create table Company (
companyId int identity(1,1), companyName varchar(100), zipcode varchar(10) , constraint PK_Company primary key (companyId))GOcreate table Person (
personId int identity(1,1), personName varchar(100), companyId int, constraint FK_Person_CompanyId foreign key (companyId) references dbo.Company(companyId), constraint PK_Person primary key (personId))GOinsert Companyselect 'ABC Company', '19808' unionselect 'XYZ Company', '08534' unionselect '123 Company', '10016'insert Personselect 'Alan', 1 unionselect 'Bobby', 1 unionselect 'Chris', 1 unionselect 'Xavier', 2 unionselect 'Yoshi', 2 unionselect 'Zambrano', 2 unionselect 'Player 1', 3 unionselect 'Player 2', 3 unionselect 'Player 3', 3 /* using CROSS APPLY */select *from Person pcross apply (
select *
from Company c where p.companyid = c.companyId) Czip/* the equivalent query using INNER JOIN */select *from Person pinner join Company c on p.companyid = c.companyId
3 回答
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
cross apply
inner join
.
select F.* from sys.objects O inner join dbo.myTableFun(O.name) F on F.schema_id= O.schema_id
inner join
select F.* from sys.objects O cross apply ( select * from dbo.myTableFun(O.name) ) F where F.schema_id= O.schema_id
编辑:
select F.* from sys.objects O cross apply dbo.myTableFun(O.name) Fwhere F.schema_id= O.schema_id
编辑:
添加回答
举报
0/150
提交
取消