2012-04-11 10 views
6

Ho 2 tabelle in MySQL db ... sono molto grandi .. la sua circa 1 milione di ora e presto di essere di 5 milioni o giù di lìcome ottimizzare query di aggiornamento per migliorare le prestazioni di MySQL

uno è in cerca di lavoro altro è tabella utenti joomla

voglio copiare o inserire gli ID nella tabella cerca di lavoro in cui la colonna di posta elettronica di entrambi soddisfa ..

cioè cerca di lavoro e-mail = utenti Jos e-mail.

ho utilizzato al di sotto di query ma ci vuole troppo tempo e mette carico pesante sul server MySQL .... le query ottiene bloccato e finisco sempre-up riavviare 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); 

come posso ottimizzare la query sopra per ottenere prestazioni migliori. Inoltre, sarei interessato se può essere eseguito in batch i.e 20000 o 40000 record alla volta.

prega di avvisare

+0

Si prega di cercare di spiegare il vostro SQL: http://dev.mysql.com/doc/refman/5.0/en/explain.html e inserisci il risultato –

risposta

6

Prova questa:

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

Che ne dite di questa semplice domanda?

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

i didnot provare questo ma cercherò di esso .. ..ma ho ottenuto il suddetto risveglio funzionante. – ricardo

+0

La mia risposta è esattamente la stessa di sopra. L'ho appena pubblicato un po 'più tardi. –

+0

@sony_CO: questa risposta è la stessa. Solo diversi alias. – Travesty3

Problemi correlati