Title: Mensaje
Me encanta discutir :-).
 
Ahora en serio, os comento mis creencias al respecto, para ver si estoy o no en lo cierto
 
 
Acceso tradicional a un fichero físico/lógico:
 
- El fichero se abre una sola vez (  si no es usropn, al inicio del programa)
 
- Para cualquier operación a realizar, el sistema no ha de buscar la mejor estrategia ni planificar nada: simplemente busca en el índice, y/o  recupera los datos.
 
- En el programa se reserva memoria para la infds del fichero y para los campos del formato de registro.
 
 
Acceso con sql:
 
- El sistema ha de analizar la sentencia y buscar la estrategia que considera mejor ( la que encuentra no siempre lo es ). Si se prepara la sentencia, este paso solo se realiza una vez, por más veces que se ejecute después.
 
- Los ficheros empleados en la sentencia se abren y cierran cada vez que se ejecuta ésta ( eso creo, aunque no estoy seguro ). Esto no es aplicable a las operaciones que recorren un cursor.
 
- por cada sentencia sql se define en el programa una estructura de datos, cuyo tamaño real desconozco, pero que según para que cosas debe ser tenido en cuenta, ya que en algunos manuales sobre ILE se recomienda no abusar de los sqls en programas de servicio por su consumo de memoria.
 
 
Resumiendo... pues lo que dije en mi anterior mensaje. Aunque coincido en que la implementación final del acceso a los registros es idéntica tanpo por sql como por acceso tradicional, antes de eso los accesos sql requieren un trabajo extra que no requiere el acceso tradicional. Eso, unido a su posible mayor necesidad de recursos de memoria lo hacen menos eficiente en el acceso aleatorio a un registro ( por ejemplo, desde el mantenimiento de pedidos, acceder a la tarifa a aplicar a la línea que se está grabando). La cosa cambia cuando se accede a varios registros ( cursores, actualizaciones masivas, ... ). Aquí sql suele acabar siendo igual o más eficiente que el acceso tradicional, salvo cuando la estrategia de acceso a los datos que encuentra el analizador no es la mejor, en cuyo caso puede ser mucho peor.
 
Lo dicho, son solo creencias. Agradeceré cualquier corrección a las mismas. 
 
 

Saludos.

Fernando Pérez.

Cerámica Saloni. Dpto. Sistemas


-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Enviado el: martes, 01 de junio de 2004 11:28
Para: [EMAIL PROTECTED]
Asunto: RE: Sobre acceso a un fichero...

Comparto esta opinión, internamente el acceso a datos se implementa igual; tanto si accedes via SQL o de la manera tradicional.
-----Mensaje original-----
De: Cubero, Rafael (R.) [mailto:[EMAIL PROTECTED]
Enviado el: martes, 01 de junio de 2004 11:25
Para: [EMAIL PROTECTED]
Asunto: RE: Sobre acceso a un fichero...

Eso mismo pensaba yo hace tiempo, pero me convencieron. Ni es mas lento ni consume mas, es solo como codifiques y como tengas definidos los accesos. Las rutinas internas de acceso a DB son las mismas.
 
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Fernando Pérez
Sent: 01 June 2004 11:16
To: '[EMAIL PROTECTED]'
Subject: RE: Sobre acceso a un fichero...

Sql es una opción, pero para acceder a un registro en concreto es bastante más ineficiente ( más lento y consume más recursos) que el acceso 'tradicional' a los ficheros. Caso de, por ejemplo, tener que recuperar los precios a aplicar a toda la facturación de un día, sí sería una buena alternativa.
 
 

Saludos.

Fernando Pérez.

Cerámica Saloni. Dpto. Sistemas


-----Mensaje original-----
De: Cubero, Rafael (R.) [mailto:[EMAIL PROTECTED]
Enviado el: martes, 01 de junio de 2004 11:07
Para: [EMAIL PROTECTED]
Asunto: RE: Sobre acceso a un fichero...

Si usas sql, siempre tendras la posibilidad de acceder mediante una select al reg. que necesitas:
 
select empresa, delegacion, tarifa, Max(fecha), max(kilometros), max(tarifa)
into...........
from FICHERO
                        where   empresa=:empresa
                        and      delegacion=:delegacion
                        and      tarifa=:tarifa
                        and      fecha<=:fecha
                        and      kilometros<=:kilometros
group by empresa, delegacion, tarifa, fecha, kilometros
order by  empresa, delegacion, tarifa, fecha, kilometros
 
 
Creo que esto te funcionaria.
 
 

Attachment: Fernando Pérez.vcf
Description: Binary data

Responder a