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

Qué consume más recuros?

Estas en el tema de Qué consume más recuros? en el foro de Bases de Datos General en Foros del Web. Hola a tod@s, ¿Qué consume más recursos en la base de datos, realizar una consulta con un join de tres tablas, o realizar una consulta ...
  #1 (permalink)  
Antiguo 11/07/2007, 04:04
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 17 años
Puntos: 0
Pregunta Qué consume más recuros?

Hola a tod@s,

¿Qué consume más recursos en la base de datos, realizar una consulta con un join de tres tablas, o realizar una consulta a una tabla y posteriormente realizar una acceso a las otras dos tablas por cada uno de los resultados de dicha consulta?

Muchas gracias.
  #2 (permalink)  
Antiguo 12/07/2007, 04:02
Avatar de MACGREGOR  
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 3 meses
Puntos: 0
Re: Qué consume más recuros?

El coste en consumo de recursos dependerá del SGBD (sistema gestor de Base de Datos) que utilices, pero en principio aproximadamente haces lo mismo así que consumirás también aproximadamente lo mismo.

Lo que te aconsejo es que hagas joins de las tablas y si el SGBD es bueno optimizará todo lo que pueda tu consulta.

De todas formas debes pensar que por muy bueno que sea, debes tener en cuenta que no es lo mismo hacer una join tabla_A.id=tabla_B.id que tabla_B.id=tabla_A.id
Dependiendo del tamaño de tus tablas aunque parezca lo mismo una opción puede ser muchisimo más costosa que la otra.

Con el siguiente ejemplo creo que quedará muy claro.

Tabla_A tiene 50 registros.
Tabla_B tiene 50.000 registros.

Una join Tabla_A.id=Tabla_B.id realizará 50 vueltas a un bucle y en cada vuelta recorrerá 50.000 registros de la tabla B.

Una join Tabla_B.id=Tabla_A.id realizará 50.000 vueltas a un bucle para tratar los 50 registros de la tabla A.

Aparentemente es lo mismo, pero sistemas como Oracle trabajan con paginación de memória (una especie de gestión de caché para la DB), el primer caso lo haría muchisimo más rápido ya que haría 1 acceso a datos para los 50 registros de la tabla_A que mantendría en 1 página de memoria y N accesos para recorrer la tabla_B.

Como la tabla_B la iria cargando en páginas de memoria de forma consecutiva y las leería enteras el coste sería mínimo, ya que cuando se produzcan fallos de página no implicarán acceder a disco para cargar datos a los que ya se había accedido.

Accediendo primero a la tabla grande el coste sería mucho mayor si el sistema está un poco cargado y se producen fallos de página. (volvería a leer de disco los 50 registros de la tabla pequeña en cada fallo).

Espero haberme explicado mínimamente.

Un saludo.
  #3 (permalink)  
Antiguo 12/07/2007, 09:28
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 17 años
Puntos: 0
De acuerdo Re: Qué consume más recuros?

Gracias por tu respuesta. Ha sido clara, y con un buen ejemplo.
  #4 (permalink)  
Antiguo 12/07/2007, 09:55
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Qué consume más recuros?

Yo creo que un join y peor si le pones un order by consume más recuersos
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 09:01.