आप उस क्रम पर भरोसा नहीं कर सकते जिसमें डेटाबेस फ़िल्टरिंग अभिव्यक्तियों का मूल्यांकन करेगा। एक क्वेरी ऑप्टिमाइज़र है जो आपके SQL का मूल्यांकन करेगा और क्वेरी को निष्पादित करने के लिए एक योजना तैयार करेगा जो यह मानता है कि इससे सर्वश्रेष्ठ प्रदर्शन प्राप्त होगा .
इस संदर्भ में, IsNumeric()
किसी अनुक्रमणिका के साथ उपयोग नहीं किया जा सकता है, और इसका अर्थ है तालिका में प्रत्येक पंक्ति के विरुद्ध एक फ़ंक्शन चलाना। इसलिए, यह लगभग कभी नहीं . होगा सर्वोत्तम कथित प्रदर्शन प्रदान करें। इसकी तुलना SrcID > 15
. से करें अभिव्यक्ति, जिसे एक सूचकांक (यदि कोई मौजूद है) के साथ मिलान किया जा सकता है, और केवल एक एकल ऑपरेटर अभिव्यक्ति है, भले ही कोई न हो। इसका उपयोग संभावित पंक्तियों की संख्या को फ़िल्टर करने के लिए भी किया जा सकता है जहां IsNumeric()
फ़ंक्शन को चलाने की आवश्यकता है।
आप इसे एक दृश्य, एक सबक्वायरी, एक सीटीई, एक केस स्टेटमेंट, या एक कंप्यूटेड कॉलम के साथ प्राप्त कर सकते हैं। यहां एक सीटीई उदाहरण दिया गया है:
With NumericOnly As
(
SELECT <columns> FROM MyTable WHERE IsNumeric(SrcID) = 1
)
SELECT <columns> FROM NumericOnly WHERE SrcID > 15
और यहां एक केस स्टेटमेंट विकल्प है:
SELECT <columns> FROM MyTable WHERE CASE WHEN IsNumeric(SrcIC) = 1 THEN Cast(SrcID As Int) ELSE 0 END > 15