Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Prepare y Unprepared ¿como? (https://www.clubdelphi.com/foros/showthread.php?t=8361)

Robert 18-03-2004 18:42:40

Prepare y Unprepared ¿como?
 
Hola con todos:
Estoy trabajando en un sistema de cuentas corrientes de clientes, y tengo el siguiente caso. Tengo un query el cual tiene dos parametros (COD_CLIE y FECHA_DE_CORTE), este query esta dentro de un while de la tabla CLIENTES
El query1 tiene la siguiente sentencia
"SELECT DISTINCT COD_CLIE, REFER from CUENTAS"
"WHERE COD_CLIE=:pa1 and FECHA_CORTE<=:pa2

y esta es la parte del código que se tiene que ejecutar

while not eof CLIENTES do
begin
query1.close;
query1.Unprepared;//se supone que es para liberar recursos
query1.params[0].value:=CLIENTESCOD_CLIE.value;
query1.params[1].value:=fecha//una fecha x
query1.prepared;//se supone que es para asignar recursos para la consulta
query1.open;
while not query1.eof do
begin
//aca viene una serie de sentencias
query1.next;
end;
CLIENTES.next;
end;

Tengo entendido que el prepared y Unprepared te asigna y quita recursos de las consultas que se realiza.
PERO para un rango de CLIENTES grande(unos 1000 registros) el sistema se cualga y sale un mensaje "Capacibylitid not suported" algo así como capacidad no soportada. Mi consulta es que en que estoy fallando o tal vez hay otros métodos para liberar memoria o algo así.
GRACIAS...........

delphi.com.ar 18-03-2004 20:09:16

Puedes preparar un query en servidores que soporten este tipo de tratamiento, en este momento no recuerdo el nombre, pero la idea es que en las consultas batch (o consultas que se repiten en diferentes terminales para algunos motores), queden compiladas en el servidor, con todo el proceso que esto significa (Parseo, comprobación sintáctica, optimización...) y que solo al momento de ser ejecutadas se pasen los valores variables (parámetros).
Digamos que si vas a insertar 1000 registros, solo prepararás el query la primera vez, y luego cambiarán los parámetros con lo que el servidor evitará recompilar la consulta para cada registro.

Espero haber sido claro, creo que me trabé un poquito al redactarlo ;)
Saludos!

haron 18-03-2004 20:29:22

he usado alguna vez la sentencia 'prepare' para agilizar sentencias y no he encontrado beneficio alguno. las sentencias seguian ejecutandose igual de rapidas (o lentas).

yo no me complicaria la vida.

de todas formas si ves que el programa va mas rapido usando estas sentencias nos lo dices.

delphi.com.ar 18-03-2004 20:33:03

Cita:

Empezado por haron
he usado alguna vez la sentencia 'prepare' para agilizar sentencias y no he encontrado beneficio alguno. las sentencias seguian ejecutandose igual de rapidas (o lentas).

yo no me complicaria la vida.

de todas formas si ves que el programa va mas rapido usando estas sentencias nos lo dices.

Bueno, yo no estoy tan de acuerdo con eso...
Por ejemplo, cualquier DBA de Oracle si quiere optimizar al máximo su servidor, exigirá a los programadores que trabajen con esta metodología, sobre todo la utilización de parámetros, porque las consultas compiladas quedan en cache en el servidor.
Obviamente que estamos hablando de configuraciones grandes, con muchos usuarios en línea, para un programa de un almacén, ni me preocuparía.

Saludos!


La franja horaria es GMT +2. Ahora son las 16:20:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi