第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

什么時(shí)候應(yīng)該在內(nèi)部連接上使用交叉應(yīng)用?

什么時(shí)候應(yīng)該在內(nèi)部連接上使用交叉應(yīng)用?

犯罪嫌疑人X 2019-06-27 15:57:58
什么時(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
查看完整描述

3 回答

?
翻翻過去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

cross apply有時(shí)能讓你做一些你不能做的事。inner join.

示例(語法錯(cuò)誤):

select F.* from sys.objects O  
inner join dbo.myTableFun(O.name) F   
on F.schema_id= O.schema_id

這是一個(gè)語法錯(cuò)誤,因?yàn)?,?dāng)與inner join,表函數(shù)只能接受變量或常數(shù)作為參數(shù)。(也就是說,表函數(shù)參數(shù)不能依賴于另一個(gè)表的列。)

然而:

select F.* from sys.objects O  
cross apply ( select * from dbo.myTableFun(O.name) ) F  
where F.schema_id= O.schema_id

這是合法的。

編輯:或者更短的語法:(由ErikE編寫)

select F.* from sys.objects O  
cross apply dbo.myTableFun(O.name) Fwhere F.schema_id= O.schema_id

編輯:

注意:Informix 12.10 xC2+擁有橫向?qū)С霰?/trans>和PostgreSQL(9.3+)橫向子查詢也可以起到類似的效果。


查看完整回答
反對(duì) 回復(fù) 2019-06-27
  • 3 回答
  • 0 關(guān)注
  • 601 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)