নিম্নলিখিত কোয়েরি বিবেচনা করুন:
MERGE [Parameter] with (rowlock) AS target
USING (SELECT @AreaId, @ParameterTypeId, @Value)
AS source (AreaId, ParameterTypeId, Value)
ON (target.AreaId = source.AreaId AND
target.ParameterTypeId = source.ParameterTypeId)
WHEN MATCHED THEN
UPDATE SET target.Value = source.Value, @UpdatedId = target.Id
WHEN NOT MATCHED THEN
INSERT ([AreaId], [ParameterTypeId], [Value])
VALUES (source.AreaId, source.ParameterTypeId, source.Value);
পরিসংখ্যান I / O নিম্নলিখিত আউটপুট দেয়:
সারণী 'প্যারামিটারটাইপ'। স্ক্যান কাউন্ট 0, লজিকাল রিডস 2, ফিজিকাল রিড 0, রিড-ফরোয়ার্ড রিড 0, লব লজিকাল রিড 0, লব ফিজিকাল রিড 0, লব রিড-ফরোয়ার্ড 0
টেবিল 'এরিয়া' ' স্ক্যান গণনা 0, লজিকাল রিডস 2, ফিজিকাল রিডস 0, রিড-ফরোয়ার্ড রিড 0, লব লজিকাল রিড 0, লব ফিজিকাল রিড 0, লব রিড-ফরোয়ার্ড 0
টেবিল 'প্যারামিটার'। স্ক্যান কাউন্ট 1, লজিকাল রিডস 4, ফিজিকাল রিড 0, রিড-ফরোয়ার্ড রিড 0, লব লজিকাল রিড 0, লব ফিজিকাল রিড 0, লব রিড-
ফরোয়ার্ড 0 টেবিল 'ওয়ার্কটেবল'। স্ক্যান কাউন্ট 1, লজিকাল রিড 0, ফিজিকাল রিড 0, রিড-ফরোডড রিড 0, লব লজিকাল রিড 0, লব ফিজিকাল 0, লব রিড-ফরোয়ার্ড 0
ওয়ার্কটেবল বার্তাগুলি ট্যাবে উপস্থিত হয় যা আমাকে ভাবায় যে টেম্পডিবি ব্যবহার করছে MERGE
।
আমি এক্সিকিউশন পরিকল্পনায় এমন কোনও কিছুই দেখছি না যা টেম্পডিবির প্রয়োজন বোঝায়
না MERGE
সবসময় tempdb ব্যবহার করবেন?
বিওএল-তে এমন কিছু আছে যা এই আচরণটি ব্যাখ্যা করে?
এই পরিস্থিতিতে ব্যবহার INSERT
এবং UPDATE
দ্রুত হতে হবে?
বাম
অধিকার
এখানে টেবিল কাঠামো
tempdb
। এটি একটি একক সারির জন্য যদিও এটি দেখতে অদ্ভুত বলে মনে হচ্ছে। আমার ধারণা হ্যালোইন সুরক্ষার জন্য এটি সেখানে থাকতে পারে।