Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/07/2007, 04:02
Avatar de MACGREGOR
MACGREGOR
 
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 4 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.