2010-05-26 11 views
18

Hızlı fon, mümkün bir tablo değerli işlev ve parametreleri ile başka bir tablo ilgilenenler için

Bir master detay tablo (seçenekler tarih) sahip, her bir ana kayıt için yaklaşık 20 ayrıntıları katılmak mı. Verileri kaydeden oltp sistemimiz, kaydettiğimiz her yeni bilgi için 21 ekleme yapıyordu. Bu sunucuyu öldürüyordu, bu yüzden detaylar tablosu için virgülle ayrılmış değerleri kullanarak çalışmayı deniyorum. Her şey çalışıyor gibi görünüyor, ancak detayların nasıl geri alınacağını anlayabiliyorum. Tablo değerli işlevler kullanmaya çalışıyorum ve oldukça çalışmıyor.

Ben bu sadece derleme değil, Açıkça

Select Top 100 * 
FROM dbo.fn_MarketDataDetails (MarketDataMasterID) mdd 
INNER JOIN MarketDataMaster mdm on mdm.MarketDataMasterID = mdd.MarketDataMasterID 

gibi bir şey aramak istiyorum.

Ben

Select Top 100 * 
FROM dbo.fn_MarketDataDetails (15425) // Assuming 15425 is a valid MarketDataMasterID 

çalıştırabilirsiniz Ve geri benim eski ayrıntıları tablosunun gibi görünen bir tablo olsun.

Bu mümkün mü? Ben hiç mantıklı mıyım?

+0

Bunu yaptığınız yerde net değil - CLR veya TSQL? –

+0

TSQL. Ana Kayıtlarda okursam kolayca bunu C# yapabilirim, ancak mümkünse TSQL'de yapmak isterim. –

cevap

33

is operatörü hile yapmak gerekir GEÇERLİ:

SELECT * 
from MarketDataMaster 
cross apply dbo.fn_MarketDataDetails (MarketDataMasterID) 

Bu aslında satır MarketDataMaster dönen bir kez başına işlevini çağırır. "çapraz başvuru", bir iç birleştirme gibi çalışır, yalnızca işlev tarafından verilerin döndüğü satırlar döndürülür; Sol dış bağlantılara benzer işlevler için "dış uygulama" kullanın.

+2

Harika, çok teşekkür ederim. Tam olarak ihtiyacım olan şey. –

+0

Cevabınız için teşekkür ederiz. –

+0

çapraz uygulaması, büyük verilerle uğraşırken performansı öldürür. Bunun için alternatif var mı? – HaBo

İlgili konular