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

एसक्यूएल एक पंक्ति या एकाधिक पंक्तियों डेटा डालें?

दरअसल, आपने इसे जिस तरह से लिखा है, आपका पहला विकल्प तेज होगा।

  1. आपके दूसरे उदाहरण में समस्या है। आप sql =+ sql + आदि कर रहे हैं। यह लूप के प्रत्येक पुनरावृत्ति के लिए एक नई स्ट्रिंग ऑब्जेक्ट बनाने जा रहा है। (स्ट्रिंगबिल्डर वर्ग देखें)। तकनीकी रूप से, आप पहली बार में भी एक नई स्ट्रिंग ऑब्जेक्ट बनाने जा रहे हैं, लेकिन अंतर यह है कि इसे पिछले स्ट्रिंग विकल्प से सभी जानकारी को कॉपी करने की आवश्यकता नहीं है।

  2. जिस तरह से आपने इसे स्थापित किया है, SQL सर्वर को संभावित रूप से एक विशाल क्वेरी का मूल्यांकन करना होगा जब आप अंततः इसे भेजते हैं जो निश्चित रूप से यह पता लगाने के लिए कुछ समय लेने वाला है कि इसे क्या करना है। मुझे बताना चाहिए, यह इस बात पर निर्भर है कि आपको कितनी बड़ी संख्या में सम्मिलित करने की आवश्यकता है। यदि n छोटा है, तो आप शायद ठीक होने जा रहे हैं, लेकिन जैसे-जैसे यह बढ़ता जाएगा आपकी समस्या और भी बदतर होती जाएगी।

SQL सर्वर बैच लेनदेन को कैसे संभालता है, इसके कारण बल्क इंसर्ट व्यक्तिगत लोगों की तुलना में तेज़ होते हैं। यदि आप सी # से डेटा डालने जा रहे हैं तो आपको पहला दृष्टिकोण लेना चाहिए और प्रत्येक 500 प्रविष्टियों को लेनदेन में कहें और इसे प्रतिबद्ध करें, फिर अगले 500 और इसी तरह करें। इसका यह भी फायदा है कि यदि कोई बैच विफल हो जाता है, तो आप उन्हें फंसा सकते हैं और पता लगा सकते हैं कि क्या गलत हुआ और उन्हें फिर से डालें। इसे करने के और भी तरीके हैं, लेकिन यह निश्चित रूप से प्रदान किए गए दो उदाहरणों में सुधार होगा।

var iCounter = 0;
foreach (Employee item in employees)
{

   if (iCounter == 0)
  {
    cmd.BeginTransaction;
  }
  string sql = @"INSERT INTO Mytable (id, name, salary) 
    values ('@id', '@name', '@salary')";
  // replace @par with values
  cmd.CommandText = sql; // cmd is IDbCommand
  cmd.ExecuteNonQuery();
  iCounter ++;
  if(iCounter >= 500)
  {
     cmd.CommitTransaction;
     iCounter = 0;
  }
}

if(iCounter > 0)
   cmd.CommitTransaction;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL में किसी स्थानीय चर के लिए डिफ़ॉल्ट मान निर्दिष्ट नहीं कर सकता

  2. SQL सर्वर से डायग्रामिंग सपोर्ट ऑब्जेक्ट को कैसे निकालें?

  3. एक वर्ण स्ट्रिंग से अद्वितीय पहचानकर्ता में कनवर्ट करते समय रूपांतरण विफल रहा

  4. एक सशर्त अप्सर्ट संग्रहीत प्रक्रिया को कैसे कार्यान्वित करें?

  5. देखे गए मानों के साथ SQL में रिकॉर्ड कैसे सम्मिलित करें?