আমি জানি যে থ্রেডটি পুরানো, আমাকে একই প্রশ্ন জিজ্ঞাসা করা হয়েছিল, আমি একটি পরীক্ষা করেছি, ফলাফলটি নিম্নরূপ ...
ফ্যাকরুকেন্সিআরটে রেকর্ডগুলি = 14264 যখন টেস্টফংশনটি 105 টি স্বতন্ত্রভাবে কার্যকর করা হয় তা প্রদান করে।
SELECT F.*, x.CurrencyKey, x.CurrencyName
FROM (
SELECT CurrencyKey, CurrencyName FROM dbo.TestFunction()
) x
INNER JOIN [dbo].[FactCurrencyRate] F ON x.CurrencyKey = f.CurrencyKey;
ফাঁসির সময়টি ...
(14264 rows affected)
Table 'FactCurrencyRate'. Scan count 1, logical reads 75, physical reads 1, read-ahead reads 73, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'DimCurrency'. Scan count 1, logical reads 2, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 31 ms, elapsed time = 749 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
যদি আমি প্রস্তাবিত উত্তরটি নিম্নরূপ ব্যবহার করি ...
select F.*, x.CurrencyKey, x.CurrencyName from [dbo].[FactCurrencyRate] F
cross apply dbo.TestFunction() x
কার্যকর করার সময় এবং ফলাফল গণনা হয় ...
(1497720 rows affected)
Table 'FactCurrencyRate'. Scan count 1, logical reads 75, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 1, logical reads 38110, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'DimCurrency'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 2106 ms, elapsed time = 43242 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
আমি এখানে যা দেখছি তা হ'ল অভ্যন্তরীণ ক্যোয়ারী ফলাফলের আরও সঠিক সেট এনেছে এবং কার্যকর করার সময়টি আরও কার্যকর। এটি সম্পাদন করার জন্য আরও ভাল পদ্ধতির সাথে আমাকে সংশোধন করুন!