परिचय
क्षेत्र में गो और पोस्टग्रेस्क्ल का उपयोग करके डेटाबेस हेरफेर के बारे में, यह सवाल उठता है: DB.exec() या से परेशान क्यों हों जब गो अपनी रचना को स्वचालित रूप से स्वचालित करता है तो तैयार किए गए कथन? यह आलेख उन परिचालनों को निष्पादित करने की जटिलताओं पर प्रकाश डालता है जो पंक्तियों को वापस नहीं करते हैं और तैयार कथनों का उपयोग करने के पीछे के तर्क को स्पष्ट करते हैं।
क्यों उपयोग करें DB.exec()?
हालांकि यह सच है कि DB.Query() और DB.exec() का उपयोग SQL कथनों को निष्पादित करने के लिए परस्पर उपयोग किया जा सकता है, वे लौटाए जाने वाले परिणाम के प्रकार में भिन्न होते हैं। DB.exec() क्वेरी से प्रभावित पंक्तियों की संख्या में अंतर्दृष्टि प्रदान करता है, जबकि DB.Query() एक परिणाम सेट लौटाता है।
उदाहरण के लिए, मान लीजिए आप एक DELETE कथन निष्पादित करना चाहते हैं और हटाई गई पंक्तियों की संख्या सुनिश्चित करना चाहते हैं। DB.exec() का उपयोग करना पसंदीदा तरीका है:
res, err := db.Exec(`DELETE FROM my_table WHERE expires_at = $1`, time.Now()) if err != nil { panic(err) } numDeleted, err := res.RowsAffected() if err != nil { panic(err) } print(numDeleted)
वैकल्पिक रूप से, अधिक बोझिल दृष्टिकोण में DB.Query() का उपयोग करना और उन्हें गिनने के लिए पंक्तियों के माध्यम से लूप करना शामिल होगा:
rows, err := db.Query(`DELETE FROM my_table WHERE expires_at = $1 RETURNING *`, time.Now()) if err != nil { panic(err) } defer rows.Close() var numDeleted int for rows.Next() { numDeleted = 1 } if err := rows.Err(); err != nil { panic(err) } print(numDeleted)
इसके अलावा, जब किसी क्वेरी का परिणाम अप्रासंगिक होता है और आपको केवल इसे निष्पादित करने की आवश्यकता होती है, तो DB.exec() एक संक्षिप्त समाधान प्रदान करता है:
if _, err := db.Exec(``); err != nil { panic(err) }
इसके विपरीत, DB.Query() का उपयोग करते समय लौटाए गए DB.Rows मान के लिए क्लोज कॉल को छोड़ने से अंततः खुले कनेक्शनों का अधिभार हो जाएगा। मेमोरी लीक के कारण।
तैयार वक्तव्यों में गहराई से जाना
हालांकि यह सुझाव दिया गया है कि गो स्वचालित रूप से तैयार कथन बनाता है, वास्तविकता अधिक सूक्ष्म प्रतीत होती है। DB.Query() का व्यवहार उपयोग किए जा रहे अंतर्निहित ड्राइवर पर निर्भर करता प्रतीत होता है। प्रश्न. आधिकारिक Postgresql दस्तावेज़ में एक झलक से पता चलता है कि कैसे तैयार किए गए कथन संचालन को अनुकूलित कर सकते हैं।
निष्कर्ष
DB.exec() और के बीच अंतर को समझना गोलांग में तैयार किए गए स्टेटमेंट डेवलपर्स को उन ऑपरेशनों को निष्पादित करने में मदद करते हैं जो पंक्तियों को कुशलता से वापस नहीं करते हैं और प्रदर्शन अनुकूलन की मांग करते समय तैयार स्टेटमेंट के लाभों का लाभ उठाते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3