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

इनपुट के रूप में रिकॉर्ड-आईडी की सूची का उपयोग करके SQL सर्वर में 4 मिलियन रिकॉर्ड अपडेट करना

इस प्रश्न तक पहुंचने का सबसे अच्छा तरीका एक तालिका में 4 मिलियन रिकॉर्ड सम्मिलित करना है। वास्तव में, आप उन्हें एक दृश्य में "बल्क इंसर्टिंग" करके पहचान कॉलम वाली तालिका में रख सकते हैं।

create table TheIds (rownum int identity(1,1), id int);

create view v_TheIds (select id from TheIds);

bulk insert into v_TheIds . . .

डेटाबेस में सभी डेटा के साथ, अब आपके पास कई और विकल्प हैं। अपडेट आज़माएं:

update t
    set booleanfield = 1
    where exists (select 1 from TheIds where TheIds.id = t.id)

आपको TheIds(id) . पर एक इंडेक्स भी बनाना चाहिए ।

यह एक बड़ा अद्यतन है, सभी एक लेन-देन के रूप में क्रियान्वित। इसका खराब प्रदर्शन प्रभाव हो सकता है और लॉग भरना शुरू हो सकता है। आप rownum . का उपयोग करके इसे छोटे लेनदेन में तोड़ सकते हैं कॉलम:

update t
    set booleanfield = 1
    where exists (select 1 from TheIds where TheIds.id = t.id and TheIds.rownum < 1000)

यहां मौजूद क्लॉज left outer join . के बराबर काम कर रहा है . मुख्य अंतर यह है कि यह सहसंबद्ध सबक्वेरी सिंटैक्स अन्य डेटाबेस में काम करना चाहिए, जहां अपडेट के साथ जुड़ना डेटाबेस-विशिष्ट है।

rownum . के साथ कॉलम, आप अपडेट के लिए जितनी चाहें उतनी पंक्तियों का चयन कर सकते हैं। इसलिए, यदि समग्र अपडेट बहुत बड़ा है, तो आप अपडेट को लूप में रख सकते हैं:

where rownum < 100000
where rownum between 100000 and 199999
where rownum between 200000 and 299999

और इसी तरह। आपको ऐसा करने की ज़रूरत नहीं है, लेकिन अगर आप किसी कारण से अपडेट को बैच करना चाहते हैं तो आप ऐसा कर सकते हैं।

मुख्य विचार डेटाबेस में एक तालिका में आईडी की सूची प्राप्त करना है, ताकि आप बाद के संचालन के लिए डेटाबेस की शक्ति का उपयोग कर सकें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर में सबक्वायरी का उपयोग कर अद्यतन क्वेरी

  2. TSQL में किसी दिनांक सीमा में कार्यदिवसों की संख्या

  3. खिड़की वाले कुल कार्यों के लिए लॉजिकल रीड इतने ऊंचे क्यों हैं?

  4. XML टैग का उपयोग करके अल्पविराम से अलग किए गए मानों की पंक्तियाँ

  5. SQL सर्वर गतिरोध क्या है?