2012-04-11 11 views
6

मैं MySQL DB में 2 टेबल है ... वे बहुत बड़े हैं .. इसके लगभग 1 लाख अब और जल्द ही होने के लिए 5 लाख या तोकैसे बेहतर MySQL प्रदर्शन के लिए अद्यतन क्वेरी अनुकूलन करने के लिए

एक नौकरी खोजने वालों है अन्य जूमला उपयोगकर्ताओं तालिका

मैं कॉपी या जहां दोनों के ईमेल कॉलम से मेल खाता है नौकरी खोजने वालों तालिका में आईडी सम्मिलित करना चाहते हैं ..

यानी नौकरी खोजने वालों ईमेल = जोस उपयोगकर्ताओं को ईमेल है।

मैं क्वेरी के नीचे का इस्तेमाल किया है, लेकिन यह बहुत ज्यादा समय लगता है और mysql सर्वर पर भारी बोझ डालता है .... प्रश्नों अटक जाती है और मैं हमेशा अंत-अप mysql को पुन: प्रारंभ ...

UPDATE `jos_jbjobs_jobseeker` 
SET user_id = (SELECT jos_users.id 
FROM jos_users 
WHERE jos_users.email = jos_jbjobs_jobseeker.email) 
WHERE EXISTS 
    (SELECT jos_users.id 
    FROM jos_users 
    WHERE jos_users.email = jos_jbjobs_jobseeker.email); 

मैं कैसे कर सकते हैं बेहतर प्रदर्शन प्राप्त करने के लिए उपर्युक्त क्वेरी अनुकूलित करें। साथ ही, मुझे दिलचस्पी होगी यदि इसे समय पर 20000 या 40000 रिकॉर्ड बैचों में निष्पादित किया जा सकता है।

कृपया सलाह

+0

अपने एसक्यूएल समझाने की कोशिश करें: http://dev.mysql.com/doc/refman/5.0/en/explain.html और परिणाम –

उत्तर

6

इस प्रयास करें:

UPDATE 
    jos_jbjobs_jobseeker a 
    INNER JOIN jos_users b ON a.email = b.email 
SET 
    a.user_id = b.id 
3

कैसे इस सरल प्रश्न के बारे में?

UPDATE jos_jbjobs_jobseeker jjj 
JOIN jos_users ju 
    ON jjj.email = ju.email 
SET jjj.user_id = ju.id; 
+0

मैं didnot इस कोशिश के बाद, लेकिन मैं यह कोशिश करेंगे .. .. लेकिन मुझे उपर्युक्त उत्तर देने वाला काम मिला। – ricardo

+0

मेरा उत्तर बिल्कुल ऊपर जैसा ही है। मैंने इसे थोड़ी देर बाद पोस्ट किया। –

+0

@sony_CO: यह उत्तर वही है। बस अलग-अलग उपनाम। – Travesty3

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