SQL सर्वर में टेम्प टेबल बनाने के लिए # का उपयोग करना आवश्यक है?


91

#SQL सर्वर में एक अस्थायी तालिका बनाने से पहले उपयोग करना आवश्यक है ?

उदाहरण:

SELECT column1, column2, someInt, someVarChar 
INTO ItemBack1 
FROM table2
WHERE table2.ID = 7

ItemBack1 के लिए क्या #प्रतीक का उपयोग करना आवश्यक है ?

यदि नहीं, तो #टेम्प टेबल बनाने में क्या फायदा है ?


3
हाँ। # अस्थायी तालिका बनाता है। इसके बिना एक टेबल बनाता है।
जीओ ली हुआन

जवाबों:


151

हाँ। आपको अस्थायी तालिकाओं को बनाने के लिए "#" (हैश) के साथ तालिका के नाम को उपसर्ग करना होगा।

यदि आपको बाद में तालिका की आवश्यकता नहीं है, तो आगे बढ़ें और इसे बनाएं। अस्थाई तालिकाओं को सामान्य तालिकाओं की तरह बहुत पसंद किया जाता है। हालाँकि, यह tempdb में बन जाता है। इसके अलावा, यह केवल वर्तमान सत्र यानी ईजी के माध्यम से ही सुलभ है: यदि कोई अन्य उपयोगकर्ता आपके द्वारा बनाई गई अस्थायी तालिका तक पहुंचने का प्रयास करता है, तो वह ऐसा करने में सक्षम नहीं होगा।

"##" (डबल-हैश "ग्लोबल" टेम्प टेबल बनाता है जिसे अन्य सत्रों द्वारा भी एक्सेस किया जा सकता है।

अस्थायी टेबल्स की मूल बातें के लिए नीचे दिए गए लिंक को देखें: http://www.codeproject.com/Articles/42553/Quick-Overview-emporary-Tables-in-SQL-Server-2005

यदि आपकी तालिका की सामग्री 5000 पंक्तियों से कम है और इसमें डेटा प्रकार जैसे कि nvarchar (MAX), varbinary (MAX) नहीं है, तो तालिका चर का उपयोग करने पर विचार करें।

वे सबसे तेज़ हैं क्योंकि वे किसी भी अन्य चर की तरह हैं जो रैम में संग्रहीत हैं। वे रैम में नहीं, टेम्पर्डब में भी संग्रहीत हैं

DECLARE @ItemBack1 TABLE
(
 column1 int,
 column2 int,
 someInt int,
 someVarChar nvarchar(50)
);

INSERT INTO @ItemBack1
SELECT column1, 
       column2, 
       someInt, 
       someVarChar 
  FROM table2
 WHERE table2.ID = 7;

टेबल चर पर अधिक जानकारी: http://odetocode.com/articles/365.aspx


11
SQL सर्वर में, सिलेक्ट सिंटैक्स INSERT INTO @ ItemBack1 SELECT column1, column2, someInt, someVarChar से table2 है जहाँ टेबल 2.ID = 7
mhenry1384

8
परिवर्तनीय तालिकाओं को रैम में संग्रहीत नहीं किया जाता है, उन्हें टेम्पर्ड बीडी में भी संग्रहीत किया जाता है। जब तक कि आप उनके कुछ डाउनसाइड्स को नहीं समझ लेते हैं, तब तक मैं टेबल वेरिएबल का उपयोग नहीं करने की सलाह दूंगा, क्योंकि उनके राउटर स्वचालित रूप से एक पर सेट हो जाते हैं, और खराब योजनाओं का परिणाम हो सकता है।
कांस्टेंटाइनके

क्या आप 5000 पंक्तियों के लिए एक स्रोत दे सकते हैं, nvarchar (अधिकतम), varbinary (अधिकतम) प्रतिबंध? इसकी अनुमति है, लेकिन मुझे यकीन नहीं है कि इसकी सिफारिश क्यों नहीं की गई है।
ब्रैड

1
मुझे भी लगा कि टेबल वेरिएबल को मेमोरी में स्टोर किया गया है। मैं दुरुस्त खड़ा हूं: dba.stackexchange.com/a/16386/23720
Baodad

1
मैं केवल यह भी टिप्पणी करने जा रहा हूं कि यह एक तथ्य है कि टेबल वेरिएबल्स को टेम्पर्डब में संग्रहित किया जाता है। मैं ऐसा टिप्पणी कर रहा हूं, हो सकता है कि अधिक लोग टिप्पणी पढ़ें और इसे वहां प्राप्त करें क्योंकि मैं एक वरिष्ठ सलाहकार के रूप में संयुक्त रूप से चलने में बहुत थक गया हूं, जो एक पूर्णकालिक कर्मचारी के साथ बहस करने के लिए अज्ञानी है और अन्यथा कहने की कोशिश करता है। मैं फॉर्च्यून 500 में दर्जनों कंपनियों से बात कर रहा हूं, इसलिए लोगों की टिप्पणी देखकर खुशी हुई। SADLY, जब तक कि यह ओपी जो सवाल का जवाब नहीं देता है, वास्तव में उनका जवाब पूरा करता है, हम इस अज्ञानी को एक और दशक तक जारी रखेंगे।
टॉम स्टिकेल

14

इस दो तालिकाओं के बीच का अंतर ItemBack1और #ItemBack1है कि पहली पर लगातार (स्थायी) जहां अन्य अस्थायी है के रूप में है।

अब अगर एक बार फिर से अपने सवाल पर गौर करें

Sql सर्वर में अस्थायी तालिका बनाने के लिए # का उपयोग करना आवश्यक है?

इसका उत्तर हां में है , क्योंकि इसके बिना #तालिका में एक अस्थायी तालिका नहीं होगी, यह सभी सत्रों और स्कोपों ​​से स्वतंत्र होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.