2010-11-04 75 views
1

我有一個存儲過程以下代碼:tsql存儲過程轉換爲vb.net:臨時表會阻止嗎?

select 
    i.ItemID 
    ,cast(p.PropertyValue as varchar(100)) as Custodian 
    ,cast(null as int) as PersonID 
    ,cast(null as bit) as Child 
into #c 
from tblItem as I 
inner join tblExternalData_Matches as m on I.ItemID = m.ItemID 
inner join tblItemExtendedProperties as p on I.ItemID = p.ItemID and p.[Application] = 'Import' and p.PropertyName = 'File Owner' 
where m.SourceID = @SourceID 

--Update PersonID for custodians we already have 
update c set 
c.PersonID = p.PersonID 
from #c as c 
inner join tblPerson as p on c.custodian = p.NameDisplay 

這將是在這個轉換的最內存高效的方法? 我應該只是選擇結果到數據表類型?

回答

0

DataTable並不是最有效的內存類型,但這一切都取決於您將如何處理數據。

查看DataReader以瞭解通過記錄集工作的最有效方法。

這是一個很棒的blog entry,它比較DataSets和DataReaders,並且可以幫助您決定走哪條路。

+0

是隻讀和向前的數據傳送器?我需要一種方法來更新記錄集對象中的項目,而不影響它來自的數據庫,例如會話的臨時表。 – phill 2010-11-05 05:48:07

+0

在這種情況下,您應該使用DataSets/DataTables – 2010-11-05 15:10:03