2012-04-11 117 views
6

Tengo 2 tablas de base de datos MySQL ... son muy grandes .. es alrededor de 1 millón ahora y que pronto será de 5 millones o menoscómo optimizar consulta UPDATE para un mejor rendimiento de MySQL

uno es demandante de empleo otro es los usuarios de Joomla mesa

quiero copiar o insertar los identificadores en la tabla de búsqueda de empleo, donde la columna de correo electrónico de ambos partidos ..

decir, correo electrónico demandante de empleo = jos usuarios de correo electrónico.

que se utiliza por debajo de consulta, pero se necesita mucho tiempo y pone una carga pesada en el servidor MySQL .... las consultas se atasca y siempre termino en marcha reiniciar 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); 

cómo puedo optimizar la consulta anterior para lograr un mejor rendimiento. Además, me interesaría si se puede ejecutar en lotes, es decir, 20000 o 40000 registros en el momento.

favor avise

+0

Por favor, tratar de explicar su SQL: http://dev.mysql.com/doc/refman/5.0/en/explain.html y publicar el resultado –

Respuesta

6

Prueba esto:

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

¿Qué hay de esta consulta simple?

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

i nose probar esto, pero voy a intentarlo .. ... pero obtuve el trabajo anterior. – ricardo

+0

Mi respuesta es exactamente la misma que la anterior. Acabo de publicarlo un poco más tarde. –

+0

@sony_CO: Esta respuesta es la misma. Solo alias diferentes. – Travesty3

Cuestiones relacionadas