我有一個父表,有兩個外鍵引用子表。我試圖想出最優的TSQL(SQL Server 2008),它將子列轉移到一行中。表結構和所需的結果集結構如下。做這項工作的最佳方式是什麼?2列SQL Server子查詢最佳
謝謝。
set nocount on
declare @parent table (parentid int , parentword varchar(3) , childid int , childotherid int)
insert into @parent values (0 , 'a' , 1 , 3)
insert into @parent values (1 , 'b' , 2 , 4)
declare @child table (childid int , childword varchar(3))
insert into @child values (1 , 'ppp')
insert into @child values (2 , 'qqq')
insert into @child values (3 , 'rrr')
insert into @child values (4 , 'sss')
needed result set
a ppp rrr
b qqq sss
我會問一個我覺得不夠具體的問題,但是「是一個左連接比內連接快,因爲我總是希望p.parentword能夠顯示如果childwor爲空「? – Snowy 2012-07-20 19:58:48
然後,你需要左連接,你應該使用that.inner連接和左連接在邏輯上不是等價的,所以比較它們的性能對我來說沒有多大意義。但是,如果內連接優化器比左連接有更多的計劃選擇,可以生成更好的計劃。但它完全依賴於在join中使用的數據和條件。但我不擔心這一點,因爲內部連接不會給我輸出我需要的。 – 2012-07-20 20:07:34