Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Crear una tabla en una consulta

Estas en el tema de Crear una tabla en una consulta en el foro de Mysql en Foros del Web. Tengo una consulta con un INNER JOIN que tarda bastante en ejecutarse, el caso es que solo necesitaría ejecutarla cuando actualizo precios, es decir una ...
  #1 (permalink)  
Antiguo 25/01/2009, 15:47
 
Fecha de Ingreso: marzo-2004
Mensajes: 32
Antigüedad: 20 años, 1 mes
Puntos: 0
Crear una tabla en una consulta

Tengo una consulta con un INNER JOIN que tarda bastante en ejecutarse, el caso es que solo necesitaría ejecutarla cuando actualizo precios, es decir una vez al mes.

He pensado que lo más eficaz sería crear o actualizar una tabla con todos los campos y registros generados en la consulta.

Por lo que me planteo automatizarlo en php, pero se me ocurre que igual existe alguna instrucción en mysql para ese cometido que desconozco, a ver si alguien puede ayudarme.

Saludos.
  #2 (permalink)  
Antiguo 27/01/2009, 10:42
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Crear una tabla en una consulta

Yo creeria que seria mas facil optimizar la consulta que debe tener algo malo para que se este ejecutndo tan lenta.

Si quiere coloquela y aca la revisamos haber si se puede mejorar.

La otra seria creo que con lgo asi como esto.


CREATE TABLE clone_select SELECT * FROM tabla_origen
  #3 (permalink)  
Antiguo 27/01/2009, 15:12
 
Fecha de Ingreso: marzo-2004
Mensajes: 32
Antigüedad: 20 años, 1 mes
Puntos: 0
Sonrisa Respuesta: Crear una tabla en una consulta

Muchas gracias, funcionó perfectamente.

El problema de la consulta es que es un ordenador muy lento y muchos registros con un JOIN entre dos tablas, una tabla tiene 50.000 registros y la otra 300, es una consulta sencilla, según la descripción de la tabla de 50000 registros se hace varias comparaciones de cadenas de texto que busca en la tabla de 300 y le asignamos un código de país, por lo que nos sale una consulta con 50000 registros y el código de país.

De todas formas voy a colgarla y si alguien piensa que se puede mejorar, pues encantado, avisar que utilizo un LEFT JOIN en lugar de un WHERE porque éste me omitiría las asignaciones nulas de country_code.

SELECT *
FROM `rates`
LEFT JOIN countries
ON ((`desc` LIKE country_lk1 OR `desc` LIKE country_lk2 OR `desc` LIKE country_lk3 ) AND `desc` NOT LIKE country_nlk1 AND `desc` NOT LIKE country_nlk2 ) ORDER BY `countries`.`country_code` ASC
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:00.