2009-05-05 17 views
8

मेरे पास 10^7 पंक्तियों के साथ एक माईसाम तालिका है। डेटा जोड़ने पर, मुझे अंत में ~ 10 पंक्तियां अपडेट करनी होंगी। क्या उन्हें हटाने के लिए तेज़ है और फिर नए डालें, या क्या उन पंक्तियों को अपडेट करना तेज़ है? डेटा जो अद्यतन किया जाना चाहिए सूचकांक का हिस्सा नहीं है। इंडेक्स/डेटा विखंडनMySQL प्रदर्शन हटाएं या अद्यतन करें?

उत्तर

20

UPDATE बहुत तेज़ है।

जब आप UPDATE, तालिका रिकॉर्ड केवल नए डेटा के साथ फिर से लिखे जा रहे हैं।

जब आप DELETE, अनुक्रमित अद्यतन किया जाना चाहिए (याद रखें, आप पूरी पंक्ति, न केवल कॉलम आप संशोधित करने की आवश्यकता हटाना) और datablocks ले जाया जा सकता है (यदि आप PCTFREE सीमा तक नहीं पहुंच)

और यह सब यह फिर से INSERT पर किया जाना चाहिए।

यही कारण है कि आप हमेशा

INSERT ... ON DUPLICATE KEY UPDATE 

बजाय REPLACE का उपयोग करना चाहिए है।

एक प्रमुख उल्लंघन के मामले में पूर्व UPDATE ऑपरेशन है, जबकि बाद वाला एक DELETE/INSERT है।

3

के बारे में क्या अपडेट करना तेज़ है। तुम भी पर नकली चाबी अद्यतन सम्मिलित उपयोग कर सकते हैं

INSERT INTO table (a,b,c) VALUES (1,2,3) 
    ON DUPLICATE KEY UPDATE c=c+1; 

अधिक जानकारी के लिए पढ़ने के लिए अद्यतन documentation

+0

दोस्त, आप 3 मिनट पर तेजी से थे, यह कितना अन्याय है ?!) –

1

तार्किक रूप से हटाएँ + जोड़ें = 2 कार्यों, अद्यतन = 1 कार्रवाई। नए परिवर्तनों को हटाने और जोड़ने के लिए auto_increment पर रिकॉर्ड आईडी, इसलिए यदि उन अभिलेखों में रिश्तों को तोड़ दिया जाएगा, या अपडेट की भी आवश्यकता होगी। मैं अद्यतन के लिए जाना होगा।

0

एक अद्यतन का उपयोग करते हुए जहां कॉलम = 'कुछ' को इंडेक्स में खोज मानदंडों के रूप में एक सूचकांक का उपयोग करना चाहिए (चाहे वह एक खोज या स्कैन एक पूरी तरह से अलग मुद्दा है)।

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

2

प्रदर्शन के लिए डेटा हटाने या अपडेट करने की बजाय, मैं विभाजन पर विचार करता हूं।

http://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html

यह आपको ऐतिहासिक डेटा बनाए रखने के और प्रदर्शन नीचा नहीं की अनुमति देगा।

संबंधित मुद्दे