में एक एकल INSERT के साथ एकाधिक पंक्तियां मैं एक एकल INSERT कथन के साथ एकाधिक पंक्तियों को डालने की गति का परीक्षण कर रहा हूं।SQLServer 2008
उदाहरण के लिए: INSERT INTO [MyTable] मान (5, 'कुत्ते'), (6, 'बिल्ली'), (3, 'मछली)
यह बहुत तेजी से है, जब तक मैं पर 50 पंक्तियों पारित एक बयान, तो गति में काफी गिरावट आई है।
50 बैचों के साथ 10000 पंक्तियां डालने से 0.9 सेकंड लगते हैं। 51 के बैचों के साथ 10000 पंक्तियां डालने से 5.7 सेकंड लगते हैं।
- क्यों 50 में इस तरह के एक कठिन प्रदर्शन गिरावट है:
मेरा प्रश्न के दो भाग हैं?
- क्या मैं इस व्यवहार पर भरोसा कर सकता हूं और 50 से बड़े बैचों को कभी भी भेजने के लिए अपने आवेदन को कोड कर सकता हूं?
मेरे परीक्षण सी ++ और एडीओ में किए गए थे।
संपादित करें: ऐसा लगता है कि ड्रॉप ऑफ पॉइंट 50 पंक्तियां नहीं है, लेकिन 1000 कॉलम हैं। मुझे 20 कॉलम की 50 पंक्तियों या 10 कॉलम की 100 पंक्तियों के साथ समान परिणाम मिलते हैं।
मुझे एहसास है कि इनपुट की पार्सिंग के कारण यह और भी खराब हो जाता है। – Andrey
पूर्ण और कुल जंगली अनुमान: एसक्यूएल सर्वर द्वारा रैम में 50 से कम पंक्तियों को कैश किया गया है, लेकिन बड़े आवेषण को अधिक "महत्वपूर्ण" माना जाता है और तुरंत डिस्क पर लिखा जाता है? ईमानदारी से सुनिश्चित नहीं है (इसलिए उत्तर के बजाय टिप्पणी) –