আমার কাছে পরামর্শ দেওয়া হয়েছে যে টি-এসকিউএল ব্যাচে আইএফ স্টেটমেন্টের ব্যবহার পারফরম্যান্সের জন্য ক্ষতিকর। আমি কিছু নিশ্চিতকরণ খুঁজতে বা এই দাবিটি বৈধ করার চেষ্টা করছি। আমি এসকিউএল সার্ভার 2005 এবং 2008 ব্যবহার করছি।
জোর দেওয়া হচ্ছে নিম্নলিখিত ব্যাচের সাথে: -
IF @parameter = 0
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
এসকিউএল সার্ভার উত্পাদিত এক্সিকিউশন প্ল্যানটি পুনরায় ব্যবহার করতে পারে না কারণ পরবর্তী মৃত্যুদন্ড কার্যকর করার জন্য আলাদা শাখার প্রয়োজন হতে পারে। এর দ্বারা সূচিত হয় যে এসকিউএল সার্ভার একটি ভিত্তি কার্যকরভাবে কার্যকর করার পরিকল্পনা থেকে সম্পূর্ণভাবে একটি শাখা মুছে ফেলবে যে বর্তমান সম্পাদনের জন্য এটি ইতিমধ্যে নির্ধারণ করতে পারে যে কোন শাখার প্রয়োজন। এটা কি সত্যি?
এছাড়াও এই ক্ষেত্রে কি ঘটে:
IF EXISTS (SELECT ....)
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
কোথায় কোন শাখা কার্যকর করা হবে তা আগেই নির্ধারণ করা সম্ভব নয়?