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

Obtener varios datos de una o por partes

Estas en el tema de Obtener varios datos de una o por partes en el foro de Mysql en Foros del Web. Hola, aquí estoy nuevamente con una duda sobre que es mas eficiente. Resulta que tengo una tabla llamada pagos, y esta a su vez se ...
  #1 (permalink)  
Antiguo 15/11/2008, 08:13
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 16 años, 10 meses
Puntos: 2
Obtener varios datos de una o por partes

Hola, aquí estoy nuevamente con una duda sobre que es mas eficiente.

Resulta que tengo una tabla llamada pagos, y esta a su vez se relaciona con una de cargos y esta otras tablas mas, y así sucesivamente.

El asunto es, que si por ejemplo yo quiero obtener la información de ese pago, también tengo que obtener la informacion del cargo y todo lo relacionado con este (a quien pertenece, como e pago, que tipo de cargo es, etc...) para poder mostrárselo al usuario.

La pregunta esta en, si es mas conveniente obtener la mayor parte de la informacion a través de una sola consulta (utilizando INNER, LEFT o RIGHT JOIN), o hacer varias consultas para obtener por separado toda la informacion.

Por ejemplo:

Código:
SELECT t1.*, t2.*, t3.* FROM t1
INNER JOIN t2 ON t2.id_t2 = t1.id_t2
INNER JOIN t3 ON t3.id_t3 = t2.id_t3
WHERE t1.id_t1 = 1000
o

Código:
SELECT t1.* FROM t1 WHERE t1.id_t1 = 1000;
SELECT t2.* FROM t2 WHERE t2.id_t2 = 566; (ese valor se lo paso a la consulta una vez obtenido la informacion de la primera consulta)
SELECT t3.* FROM t3 WHERE t3.id_t3 = 854; (lo mismo que antes, pero con la segunda consulta)
__________________
KIBIT.cl
  #2 (permalink)  
Antiguo 15/11/2008, 19:18
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Obtener varios datos de una o por partes

Hola cuando ejecutas una consulta te avisa sobre el tiempo que demora cada consulta, yo probaria ver cuanto demora la primer opcion, es decir con los joins y despues ejecutar cada una de las otras y fijarte cuando consume el tiempo en total. De todos modos, creo que lo mejor es como lo planteas de la primer manera.
Saludos
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 16/11/2008, 01:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Obtener varios datos de una o por partes

opino como CALA932

SELECT t1.*, t2.*, t3.* FROM t1
INNER JOIN t2 ON t2.id_t2 = t1.id_t2
INNER JOIN t3 ON t3.id_t3 = t2.id_t3
WHERE t1.id_t1 = 1000

es la mejor consulta, y todavía mejoraría más si, en el caso de que trabajes con tablas MyISAM, tuvieras indexados los campos id_t2 de la tabla t1, id_t3 de la tabla t2, y si en la selección precisaras los campos de cada tabla y no usaras el asterisco, ya me entiendes: t1.campo1, t1.campo2, t2.campo1 (sólo te traes los necesarios).

Piensa que te traes en una sola consulta todos los datos que necesitas, que el programa, si los índices están bien establecidos, sólo recurre a ellos. Creo que esa sería la mejor opción.
  #4 (permalink)  
Antiguo 16/11/2008, 10:10
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Obtener varios datos de una o por partes

Claro, en las consultas que hago obtengo solo los datos necesarios, los ejemplos que puse son solo ejemplos xD.

Ademas la mayoria de las tablas las tengo relacionadas a traves desu clave principal, por lo que es aun mas eficiente.

Y lo otro, que en el ejemplo que puse solo relaciono 3 tablas, pero en lo que estoy haciendo hago consultas para obtener datos en mas de 8 tablas a veces.
__________________
KIBIT.cl
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:43.