Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक अस्थायी तालिका घोषित बनाम बनाम का उपयोग करना:प्रदर्शन/अंतर?

@table सिंटैक्स एक तालिका चर बनाता है (tempdb . में एक वास्तविक तालिका) ) और इसके परिणामों को अमल में लाता है।

WITH सिंटैक्स सामान्य तालिका अभिव्यक्ति को परिभाषित करता है जो भौतिक नहीं है और केवल एक इनलाइन दृश्य है।

अधिकांश समय आप दूसरे विकल्प का उपयोग करना बेहतर समझते हैं। आप उल्लेख करते हैं कि यह एक समारोह के अंदर है। यदि यह एक TVF है तो अधिकांश समय आप चाहते हैं कि ये मल्टी स्टेटमेंट के बजाय इनलाइन हों ताकि इन्हें ऑप्टिमाइज़र द्वारा विस्तारित किया जा सके - यह तुरंत तालिका चर के उपयोग को अस्वीकार कर देगा।

हालांकि कभी-कभी (मान लें कि अंतर्निहित क्वेरी महंगी है और आप इसे कई बार निष्पादित होने से बचाना चाहते हैं) आप यह निर्धारित कर सकते हैं कि मध्यवर्ती परिणामों को अमल में लाने से कुछ विशिष्ट मामलों में प्रदर्शन में सुधार होता है। वर्तमान में कोई रास्ता नहीं CTEs के लिए इसे बाध्य करने के लिए (बिना किसी योजना गाइड को बाध्य किए कम से कम )

उस स्थिति में आपके पास (सामान्य रूप से) 3 विकल्प होते हैं। एक @tablevariable , #localtemp तालिका और एक ##globaltemp मेज़। हालांकि इनमें से केवल पहले को ही किसी फ़ंक्शन के अंदर उपयोग करने की अनुमति है।

तालिका चर और #temp तालिकाओं के बीच अंतर के बारे में अधिक जानकारी के लिए यहां देखें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy ट्रंकिंग VARCHAR (MAX)

  2. मैं रिपोर्टिंग सर्विसेज एक्सप्रेशन भाषा में इफ इफ स्टेटमेंट कैसे लिखूं?

  3. मैं प्रोग्रामेटिक रूप से एक डीएसएन कैसे बना सकता हूं?

  4. SQL सर्वर एक्सप्रेस की सीमाएं

  5. SQL सर्वर में संग्रहीत कार्यविधि या फ़ंक्शन में अंतिम परिवर्तन की तिथि कैसे जांचें?