मैं दूसरे से मिली जानकारी के आधार पर एक MySQL टेबल को अपडेट करने की कोशिश कर रहा हूं।
मेरी originalतालिका इस प्रकार है:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
और tobeupdatedतालिका इस प्रकार है:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
मैं अद्यतन करना चाहते idमें tobeupdatedसाथ idसे originalके आधार पर value(में संग्रहीत तार VARCHAR(32)क्षेत्र)।
अद्यतन तालिका उम्मीद की तरह दिखाई देगी:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
मेरे पास एक क्वेरी है जो काम करती है, लेकिन यह बहुत धीमी है:
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
यह मेरे सीपीयू को अधिकतम करता है और अंततः अपडेट किए गए अपडेट के केवल कुछ अंश के साथ एक टाइमआउट की ओर जाता है (मिलान करने के लिए कई हजार मान हैं)। मुझे पता है कि मैचिंग valueधीमी होगी, लेकिन यह एकमात्र डेटा है जो मुझे उन्हें एक साथ मिलाना है।
क्या इस तरह से मूल्यों को अपडेट करने का एक बेहतर तरीका है? मर्ज किए गए परिणामों के लिए मैं एक तीसरी तालिका बना सकता हूं, अगर यह तेजी से होगी?
मैंने MySQL की कोशिश की - मैं किसी तालिका को किसी अन्य तालिका से मानों के साथ कैसे अपडेट कर सकता हूं? , लेकिन यह वास्तव में मदद नहीं करता था। कोई विचार?
एक MySQL नौसिखिया मदद करने के लिए अग्रिम धन्यवाद!