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

Subconsulta demora demasiado

Estas en el tema de Subconsulta demora demasiado en el foro de Mysql en Foros del Web. Buenas a todos, tengo un problemita con una consulta que tiene una subconsulta. Tengo 3 tablas: Tabla1:--------Tabla2:------------------- Tabla3: Galeria ----- Galeria - Imagen -------- Imagen ...
  #1 (permalink)  
Antiguo 16/05/2007, 01:30
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 18 años, 11 meses
Puntos: 0
Subconsulta demora demasiado

Buenas a todos, tengo un problemita con una consulta que tiene una subconsulta.
Tengo 3 tablas:

Tabla1:--------Tabla2:------------------- Tabla3:
Galeria ----- Galeria - Imagen -------- Imagen ---- Nombre
- 1 ----------- 2 ------ 1001 -------- 1001 ---- imagen1.jpg
- 2 ----------- 2 ------ 1002 -------- 1002 ---- imagen2.jpg
- 3 ----------- 2 ------ 1003 -------- 1003 ---- imagen3.jpg
- 4 ----------- 2 ------ 1004 -------- 1004 ---- imagen4.jpg
- 5 ----------- 4 ------ 2220 -------- 2220 ---- imagen5.jpg
- 6 ----------- 4 ------ 2221 -------- 2221 ---- imagen6.jpg

La tabla1 esta relacionada con tabla2 por el campo "Galeria"

La tabla2 con la tabla3 por el campo "Imagen"
lo que necesito es hacer una consulta cosa que elija una galeria y obtenga el nombre de la imagen o de las imagenes que estan relacionadas.

Estoy haciendo esta consulta:

SELECT * FROM tabla3 where imagen = any (select imagen from tabla2 where galeria =2) order by imagen

Ahora... la consulta sale bien, me trae los nombres de las imagenes, la Tabla2 tiene poco mas de 3000 registros, pero solo son 4 los que tienen que aparecer en la consulta, y solo me devuelve los 4 registros.

El problema es que demora mas de 30 segundos para hacer solo eso, entre 36 seg, 34 seg, y ahi nomas, aparte de que la pc se me queda casi colgada porque el mysql se morfa todo los recursos, y en el server de hosting pasa lo mismo, esta como colgado miestras hace esa consulta sola.

La verdad es que no se para donde agarrar este tema.

Si me dan una mano les agradeceré.

Saludos

Última edición por PeGaSuSeAc; 16/05/2007 a las 01:41
  #2 (permalink)  
Antiguo 16/05/2007, 01:48
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Re: Subconsulta demora demasiado

Buenas

Yo probaría con esto, en princio te debe valer

Código:
SELECT t3.* FROM tabla3 t3,tabla2 t2 where 
t2.galeria = 2 AND 
t3.imagen = t2.imagen 
order by t3.imagen
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #3 (permalink)  
Antiguo 16/05/2007, 09:11
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Re: Subconsulta demora demasiado

Hola
Tienes que optimizar tus consultas.
- Evita usar (*) (a no ser que desees recuperar todos los registros), trata de colocar los nombres de los campos que desees recuperar
- Todos los campos que están dentro de Where son candidatas a ser indices
- Usa la sentencia Explain, te ayudará a optimizar mejor tus consultas

Aquí puedes encontrar mayores referencias
http://dev.mysql.com/doc/refman/5.0/es/query-speed.html

saludos!
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 03:45.