什么時(shí)候應(yīng)該在內(nèi)部連接上使用交叉應(yīng)用?使用的主要目的是什么?交叉應(yīng)用?我(隱約地,通過互聯(lián)網(wǎng)上的帖子)讀到cross apply如果要進(jìn)行分區(qū),則在對(duì)大型數(shù)據(jù)集進(jìn)行選擇時(shí),效率可能更高。(想到尋呼)我也知道CROSS APPLY 不需要將udf作為正確的表。在大多數(shù)INNER JOIN查詢(一對(duì)多的關(guān)系),我可以重寫它們以使用CROSS APPLY但他們總是給我同等的執(zhí)行計(jì)劃。誰能給我舉個(gè)很好的例子CROSS APPLY在那些情況下INNER JOIN也會(huì)起作用嗎?編輯:下面是一個(gè)簡(jiǎn)單的例子,其中的執(zhí)行計(jì)劃是完全相同的。(給我看看它們的不同之處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
什么時(shí)候應(yīng)該在內(nèi)部連接上使用交叉應(yīng)用?
犯罪嫌疑人X
2019-06-27 15:57:58