यह मुझे सुझाव दिया गया है कि टी-एसक्यूएल बैचों में आईएफ बयानों का उपयोग प्रदर्शन के लिए हानिकारक है। मैं कुछ पुष्टि खोजने या इस दावे को मान्य करने का प्रयास कर रहा हूं। मैं SQL Server 2005 और 2008 का उपयोग कर रहा हूं।
यह कथन निम्नलिखित बैच के साथ है: -
IF @parameter = 0
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
SQL सर्वर उत्पन्न निष्पादन योजना का फिर से उपयोग नहीं कर सकता क्योंकि अगले निष्पादन के लिए अलग शाखा की आवश्यकता हो सकती है। इसका मतलब यह है कि SQL सर्वर निष्पादन योजना से एक शाखा को पूरी तरह से इस आधार पर समाप्त कर देगा कि वर्तमान निष्पादन के लिए यह पहले ही निर्धारित कर सकता है कि किस शाखा की आवश्यकता है। क्या यह वास्तव में सच है?
इसके अलावा इस मामले में क्या होता है: -
IF EXISTS (SELECT ....)
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
यह पहले से निर्धारित करना संभव नहीं है कि किस शाखा को निष्पादित किया जाएगा?