निजी SNAFU DBA को जाता है


जो लोग नहीं जानते, उनके लिए SNAFU युद्ध के दौरान अमेरिकियों द्वारा बनाए गए सैन्य देशभक्ति कार्टून में एक चरित्र है। यह मूर्खता, प्राकृतिक मुहावरे के कारण, हर समय भयावह स्थिति में आती है और एक नियम के रूप में, श्रृंखला के अंत में मर जाती है। सच है, अगली श्रृंखला में वह फिर से जीवित है - इस अर्थ में, वह दक्षिण पार्क से केनी के दूर के पूर्वज माना जा सकता है।

SQL सर्वर डेवलपर स्थिति के लिए लोगों की भर्ती करते समय, मैं अक्सर विनम्र था कि उन्होंने कैसे सवालों के जवाब दिए। अगर मैं अपने एक सहयोगी को सुझाव देता कि मैं एक छोटी-सी लाइन के काम से नहीं बचा था, तो मैं उन्हें हाँ बताने के लिए तैयार था। यह आश्चर्यजनक है कि यह कार्य एकल SQL स्ट्रिंग में कितना उत्पादन कर सकता है। और अब उम्मीदवार पहले से ही उत्साह से चलता है। एक रेक, जैसा कि आप देखेंगे, कई हैं। बेशक, एक भी व्यक्ति ने सभी संभव रेक एकत्र नहीं किए। लेकिन उन सभी को दिखाने के लिए मुझे SNAFU की जरूरत थी।

तो, कार्य:

SELECT * FROM Events where DT='2020/02/03'

  • कोड के लेखक क्या करना चाहते थे?
  • जैसा मैं चाहता था, यह काम क्यों नहीं कर सकता?
  • इसे कैसे जोड़ेंगे?

SNAFU के साथ मेरी बातचीत आगे बढ़ेगी।

SNAFU: जाहिर है, क्वेरी एक दिन के लिए डेटा का चयन करती है।
मैं: और इसमें गलत क्या है?
SNAFU: ठीक है, एक तारांकन है, यह खेतों को इंगित करने के लिए बेहतर होगा ...
Me: और तालिका में क्या संग्रहीत है, आपको क्या लगता है? और DT किस प्रकार का क्षेत्र है?
SNAFU: इवेंट्स ... इवेंट्स का समय ... तो डेटाइम
मी: खैर?
SNAFU: (प्रतिबिंब के बाद) आह, इसलिए यदि वहाँ समय है, तो नोट्स केवल आधी रात के बाद ही पढ़े जाएंगे।
I: उत्कृष्ट।

हमने पहले दो बिंदुओं को पार कर लिया है और तीसरे पर आगे बढ़ गए हैं।

मैं: इसे कैसे ठीक करूँ?
SNAFU: जहां कन्वर्ट (varchar, DT, 102) = '2020/02/03' (रेक # 1 काम)
I:लेकिन क्या यह आपको परेशान नहीं करता है कि यह SQL को डीटी इंडेक्स का उपयोग करने से रोक सकता है यदि यह वहां है?
SNAFU: जहाँ '2020/02/03' और '2020/02/04' (रेक # 2 वर्क) के बीच DT
Me: क्या यह आपको परेशान करता है कि अगले नंबर (आधी रात) के लिए डेटा भी यहाँ शामिल किया जाएगा?
SNAFU: जहाँ DT '2020/02/03' और '2020/02/03 23:59:59' (रेक # 3 काम) के बीच
I: क्या आप एक ऐसे बैंक से निपटना चाहेंगे जिसमें पैसा होने पर दूसरा हो? जो आपने योगदान दिया वह खो जाएगा?
SNAFU: जहाँ DT '2020/02/03' और '2020/02/03 23: 59: 59.999' (रेक # 4 वर्क) के बीच
I: क्या आप जानते हैं कि 23: 59: 59.999 मध्यरात्रि तक फिर से गोल हो जाएगा?
घपला:वास्तव में, वहाँ दानेदारता 13-16ms है। तब: जहाँ '2020/02/03' और '2020/02/03 23: 59: 59.986' (रेक # 5 वर्क) के बीच DT
Me: अर्थात, यदि DT smalldatetime या datetime2 हो जाए, तो क्या सब कुछ काम करना बंद कर देगा?



मुझे नहीं पता कि नीचे के क्षण में संक्रमण इतना मुश्किल क्यों है। वास्तव में, आधे से अधिक उम्मीदवार मूर्खतापूर्ण हताश हैं। कभी-कभी आपको संकेत देना पड़ता है। लेकिन हमारे SNAFU ने एक समाधान पर अत्याचार किया:

SNAFU: जहाँ DT> = '2020/02/03' और DT <'2020/02/04'
Me: आखिरकार।

SNAFU ने उसके माथे से पसीना पोंछा। अब नियंत्रण शॉट के लिए समय है।
मैं: और यहाँ वास्तव में क्या बुरा है?
SNAFU हिल रहा है। उसके हाथ काँप रहे हैं। टकटकी लगाए भटकते रहते हैं।
मैं: यह 3 फरवरी है या 2 मार्च है?

मुझे ऐसा लगता है कि इस तरह के कार्य मूढ़ "परीक्षण कार्यों" की तुलना में बहुत तेजी से समझ देते हैं। इस मामले में, SNAFU एक अच्छा आदमी हो सकता है, लेकिन उसने अस्थायी डेटा के साथ बहुत कम काम किया है, और बेहतर है कि उसे वित्तीय क्षेत्र में न आने दें।


All Articles