Cita:
|
Empezado por Ignacio
Estas consultas tienen en algunos casos 6 o 7 "Left Outer" o "Inner Join". Ademas la repito con pequeñas variantes dentro de la misma consulta usando "Union" entre 8 y 10 veces.
|
parece una consulta bastante compleja... supongo que firebird podrá resolverla mejor que paradox... y sobre estas dos, oracle, que es el rey de la optimización. Pero antes de creer mis propias conclusiones, valdria la pena que hagas tus propias pruebas.
[quote=Ignacio]Esto hace que al usar la consulta desde una PC remota, si el resultado que se obtiene, es pequeño, tarda poco, si es grande tarda mucho y si es muy grande aparece un error "Insuficiente memoria", error que no aparece si uso esa consulta desde la maquina que tiene los datos.[/sql] esto puede ocurrir porque usando paradox, todos los datos han de viajar al cliente para hacer los joins. Al usar c/s (como firebird, interbase, oracle u otro) este proceso se hace en la memoria del servidor y viajan solamente los datos que devuelva el join.
Cita:
|
Empezado por Ignacio
Te pregunto. Al usar "Join", la tabla llamada se carga entera en ram o solo la parte que necesito?
|
Esto depende del servidor. En el caso de paradox... es una caja cerrada. En el caso de los motores relacionales serios, regularmente podes consultar el plan de ejecución e inferir en las decisiones del servidor mediante hints de optimización.
Claro que para que el servidor tome buenas decisiones y escoja la mejor ruta para hacer el/los joins, es necesario que declares indices que sean útiles para este propósito.
Cita:
|
Empezado por Ignacio
el comando "Sum" es usado más de 50 veces
|
Una vez el join esté resuelto.. creo que cualquier servidor tardaría mas o menos lo mismo en resumir los datos para sum o cualquier otra función agregada.