मुझे कई तालिकाओं से दो साल से अधिक पुराने रिकॉर्ड हटाकर एक बहुत ही ब्लूटूथ SQL डेटाबेस साफ़ करने की आवश्यकता है। ऐसा करने का सबसे प्रभावी तरीका क्या है?SQL क्वेरी दो साल से अधिक पुराने रिकॉर्ड हटाने के लिए
उत्तर
क्या आपके पास यह निर्धारित करने का कोई तरीका है कि रिकॉर्ड "पुराना" कैसा है? (यानी, क्या तालिका में कोई स्तंभ है जो या तो पंक्ति की आयु या उस तारीख का प्रतिनिधित्व करता है जिसका उपयोग उम्र की गणना करने के लिए किया जा सकता है?)। एडम रॉबिन्सन अच्छा जवाब के अलावा
DELETE FROM Table WHERE DATEADD(year, 2, CreateDate) < getdate()
हालांकि ताले के मामले में काफी बुरा हो सकता है। –
@ मार्टिन: मुझे यकीन नहीं है कि इससे बचने योग्य है, या यहां तक कि यदि आप चाहते हैं *। मैं नहीं देखता कि यह किसी भी अन्य 'हटाए गए' या 'अद्यतन' की तुलना में ताले के मामले में अधिक "बुरा" है, इस तथ्य के अलावा कि इसमें एक टेबल स्कैन शामिल है। –
बैचों में ब्रेकिंग को समेकन के लिए बेहतर हो सकता है। –
: यदि हां, तो यह एक साधारण
DELETE FROM Table WHERE Age > 2
उदाहरण के लिए होना चाहिए, यदि आप एक DateTime
स्तंभ CreateDate
कहा जाता है, तो आप ऐसा कर सकता है जब यह प्रदर्शन आपरेशन के प्रकार:
- इन्हें हटाना एक चयन करें क्वेरी चलाएँ कहां खंड पहले सुनिश्चित करें कि आप हो रही है "सही डेटा" बनाने के लिए है 210
- एक पूर्ण बैकअप घंटे "बंद" में
- भागो बात करते हैं ताकि उन बहुत ज्यादा
मैं डीबीए देखा है कुछ अलग कंपनियों में ऐसा और यह हमेशा उपयोग करने के लिए लगता है को प्रभावित करने के लिए नहीं निम्न स्वरूप:
- बैकअप तालिका
- ड्रॉप किसी भी अनुक्रमित
- पंक्तियों आप एक अस्थायी तालिका
- Trun में रखना चाहते हैं का चयन करें आप अस्थायी तालिका से cate मूल तालिका
- सम्मिलित (अपने स्रोत तालिका में)
- पुन: अनुक्रमणिका
इस दृष्टिकोण को लाभ यह है कि लॉग के लिए इस अद्यतन does not को लिखने तो वे नहीं मिलता है हजारों हटाए गए प्रविष्टियों द्वारा उड़ाया गया। यह भी तेज़ है।
दोष यह है कि अद्यतन लॉग को नहीं लिखता है, इसलिए आपका एकमात्र विकल्प आपके बैकअप को पुनर्स्थापित करना है।
आपको घर को रखने के बारे में सोचना चाहिए। यदि उपरोक्त, बहुत डरावना है, तो आप समय के मामले में डेटाबेस को जीतने के लिए घर का उपयोग भी कर सकते हैं।
एमएसएसक्यूएल में, आप रोज़ाना चलाने के लिए नौकरी बना सकते हैं जो आपकी क्वेरी की पहली 1000 पंक्तियों को हटा देता है। एडम क्वेरी चोरी करने के लिए -
DELETE शीर्ष 1000 मेज से कहां DATEADD (वर्ष, 2, CreateDate) < getdate()
यह बहुत ही सुरक्षित होगा और या तो सुरक्षित रूप से तीन महीने में अपने डेटा से छुटकारा पाने के हैं और क्या वे भविष्य में डीबी के आकार को भी बनाए रखेंगे।
आपका डेटाबेस भविष्य में इस स्थान का उपयोग करेगा, लेकिन यदि आप स्पेस को पुनर्प्राप्त करना चाहते हैं तो आपको डेटाबेस को कम करने की आवश्यकता होगी। यदि आप रुचि रखते हैं तो चारों ओर पढ़ें - चाहे वह लायक है, डीबी के कुल आकार के विरुद्ध पुनर्प्राप्त करने के लिए अंतरिक्ष की मात्रा पर निर्भर करता है।
- 1. दो साल से अधिक पुराने ब्राउज़रों का पता लगाएं
- 2. गैर डुप्लिकेट रिकॉर्ड के लिए SQL क्वेरी
- 3. तालिका से डुप्लिकेट रिकॉर्ड हटाना - SQL क्वेरी
- 4. मर्ज क्वेरी और हटाने रिकॉर्ड
- 5. डेटाबेस से पुराने रिकॉर्ड हटाएं
- 6. दो साल
- 7. SQL क्वेरी दो तिथियों के बीच नहीं
- 8. जुड़ें दो SQL क्वेरी
- 9. से अधिक हटाने के कई तालिका
- 10. किसी SQL क्वेरी अधिक कुशल
- 11. LINQ से SQL: एक क्वेरी
- 12. 100000000 से अधिक रिकॉर्ड
- 13. एक साल पहले से सभी रिकॉर्ड का चयन अब तक
- 14. ओरेकल डेटाबेस पर पुराने डेटा को हटाने के लिए तकनीक
- 15. x दिनों से पुराने एंड्रॉइड स्क्लेइट पंक्तियों को हटाने
- 16. एक दिन से पुराने आइटम हटाएं - SQL सर्वर
- 17. कितनी एसक्यूएल क्वेरी बहुत अधिक SQL क्वेरी है?
- 18. LINQ क्वेरी में एकाधिक रिकॉर्ड हटाने का सबसे अच्छा तरीका?
- 19. SQL क्वेरी
- 20. SQL क्वेरी में क्लॉज से दो कैसे हो सकते हैं?
- 21. शून्य क्वेरी वाले दो स्तंभों के मान जोड़ने के लिए SQL क्वेरी?
- 22. SQL क्वेरी
- 23. तालिका से सामग्री को हटाने के लिए दैनिक SQL कार्य
- 24. 3 दिन की नौकरी रोलिंग के लिए 3 दिनों से अधिक की तारीख वाले रिकॉर्ड हटाना?
- 25. SQL क्वेरी, गिनती और
- 26. LINQ क्वेरी शीर्ष रिकॉर्ड
- 27. पहले प्रकट होने के लिए रिकॉर्ड को मजबूर करने के लिए SQL क्वेरी समायोजित करें?
- 28. एसक्यूएल बयान XXX की तुलना में पुराने रिकॉर्ड को नष्ट करने के रूप में लंबे समय के रूप में वहाँ YY पंक्तियों से अधिक हैं
- 29. दो या दो से अधिक seqs
- 30. दिनांक सीमा के साथ SQL क्वेरी में साल की उपेक्षा कर
आरडीबीएमएस क्या है? 2 साल से अधिक पुराने रिकॉर्ड कितने हैं?2 साल से कम कितने रिकॉर्ड? –
क्या प्रत्येक तालिका पर "बनाया गया" या "अंतिम अपडेट" फ़ील्ड का एक सामान्य सेट है? –
आपके द्वारा उपयोग किए जा रहे SQL उत्पाद को जोड़ना महत्वपूर्ण है (MSSQL, mySQL, आदि)। उदाहरण के लिए एमएसएसक्यूएल में, यदि आपके पास सैकड़ों हजारों पंक्तियां हैं, तो आप लेनदेन लॉग वृद्धि के लिए देखना चाहते हैं। –