2010-10-28 17 views
11

मैंने देखा कि मेरा एक स्क्रिप्ट बहुत धीमा हो गया, फिर मैंने समस्या को संकुचित कर दिया: यह एक अद्यतन क्वेरी थी। अजीब चीज यह है कि चयन क्वेरी बहुत तेज है। तालिका में लगभग 600,000 प्रविष्टियां हैं। और हाँ, आईडी अद्वितीय प्राथमिक कुंजी है।बेहद धीमी अद्यतन क्वेरी

SELECT * FROM `tmp_pages_data` WHERE id = 19080 LIMIT 0 , 30 

Showing rows 0 - 0 (1 total, Query took 0.0004 sec) 

और अब अद्यतन क्वेरी: कुछ उदाहरण हैं

UPDATE tmp_pages_data SET page_status = 1 WHERE id = 19080 

1 row(s) affected. (Query took 24.5968 sec) 

आप देख सकते हैं, चुनें बहुत तेजी से है, लेकिन अद्यतन veery धीमी है। यह कैसे संभव है?

+0

कृपया अपने स्कीमा की संरचना, और विशेष रूप से अनुक्रमित जोड़ें। अनुक्रमित आकार और इंजन प्रकार लिखें रूप में अच्छी तरह –

+0

ठीक है, यहाँ कैसे मेज की तरह लग रहा है: टेबल बनाते हैं नहीं 'मौजूद tmp_pages_data' ( ' id' पूर्णांक (10) अहस्ताक्षरित नहीं NULL AUTO_INCREMENT, 'site_id' पूर्णांक (11) डिफ़ॉल्ट शून्य, 'url' varchar (255) डिफ़ॉल्ट शून्य, ' date_added' datetime डिफ़ॉल्ट शून्य, 'page_status' tinyint (4) डिफ़ॉल्ट शून्य, ' page_type' varchar (255) डिफ़ॉल्ट शून्य, 'title_normal' varchar (255) डिफ़ॉल्ट शून्य, 'cat_id' पूर्णांक (11) डिफ़ॉल्ट शून्य, ' title_id' पूर्णांक (11) डिफ़ॉल्ट शून्य, प्राथमिक कुंजी ('id'), कुंजी' url' ('url') ) इंजन = माईसाम डिफॉल्ट चैरसेट = लैटिन 1 ऑटोऑक्रिकमेंट = 658002; – okaybmd

+0

इंडेक्स: प्राथमिक (बीटीआरई) अद्वितीय: हाँ पैक किया गया: नहीं \t फ़ील्ड: आईडी \t कार्डिनालिटी: 658001 कोलालेशन: ए \t शून्य: नहीं; सूचकांक: यूआरएल (BTREE) \t अद्वितीय: नहीं \t पैक: नहीं \t फील्ड: यूआरएल \t प्रमुखता: 658,001 \t मिलान: एक \t अशक्त: हाँ – okaybmd

उत्तर

1

हाँ, यह बहुत अजीब है। केवल एक चीज जो मैं सोच सकता हूं वह है कि tmp_pages_data तालिका अन्य लेनदेन द्वारा बंद कर दी गई है, या id = 19080 के साथ पंक्ति अन्य लेनदेन द्वारा बंद है।

अन्य (असंभव चीज़) यह है कि आपके पास page_status पर एक इंडेक्स है जिसे UPDATE वाक्य पर अपडेट करने की आवश्यकता है, और उस भाग को निष्पादित करने में काफी समय लग रहा है।

+0

दरअसल, मेरे पास पृष्ठ_स्टैटस पर एक अनुक्रमणिका है, लेकिन इसे – okaybmd

+0

एचएम हटा दिया गया ... नहीं, यह कारण नहीं है। मैंने सोचा कि शायद सूचकांक "ठीक से" नहीं हटाया गया था, लेकिन ऐसा नहीं है। मैंने एक परीक्षण किया है: अद्यतन tmp_pages_data SET cat_id = 1 जहां आईडी = 1 9 8080 -> 1 पंक्तियां प्रभावित हुईं। (क्वेरी ने 4.7825 सेकेंड लिया) तो अभी भी बहुत समय है (और cat_id पर कोई अनुक्रमणिका नहीं है और कभी नहीं था) – okaybmd

-1

ठीक है, किया गया!

मुझे अपाचे को पुनरारंभ करना पड़ा, अब यह बहुत अच्छा काम करता है (वास्तव में मैंने उबंटू को रिबूट किया है)!

UPDATE tmp_pages_data SET page_status =1 WHERE id =19080 

1 row(s) affected. (Query took 0.0004 sec) 

धन्यवाद आपके सुझावों के लिए हर किसी को :)

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