FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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=a1 and FECHA_CORTE<=a2 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........... |
#2
|
||||
|
||||
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!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
||||
|
||||
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.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda” (Confucio) |
#4
|
||||
|
||||
Cita:
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!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|