IBM DB2 Connect Guia Del Usuario página 104

Ocultar thumbs Ver también para DB2 Connect:
Tabla de contenido

Publicidad

SQL estático y dinámico
96
Guía del usuario
Con la agrupación por bloques, la primera fila de datos de la consulta no
se enviará a la aplicación hasta que se haya recibido el primer bloque. La
agrupación por bloques aumenta el tiempo de recuperación de la primera
fila pero mejora el tiempo de recuperación de las filas posteriores.
Otro aspecto importante es la cantidad de memoria que se utiliza. El
conjunto de trabajo de la memoria suele aumentar cuando la agrupación
por bloques está activada.
DB2 Connect permite controlar la cantidad de datos que se transfieren en
cada bloque.
Para invocar la agrupación por bloques, utilice la opción BLOCKING del
mandato prep o bind. La agrupación por bloques está activada si:
v El cursor es de sólo lectura o
v El cursor es ambiguo y la especificación por bloques se especifica con el
mandato prep o bind.
Nota: cuando se utiliza SQL dinámico, el cursor siempre es ambiguo.
Sentencias de SQL con BLOCKING:
Las sentencias SELECT actualizables (las que utilizan las sentencias
UPDATE/DELETE WHERE CURRENT OF) son consultas que no permiten la
agrupación por bloques, así que sólo deberían utilizarse en caso
absolutamente necesario.
Una sentencia SELECT actualizable garantiza que la fila no ha cambiado
entre el momento en el que finaliza la sentencia SELECT y se emite la
sentencia UPDATE/DELETE. Si esta nivel de simultaneidad no resulta
importante para su aplicación, puede utilizar como método alternativo una
sentencia DELETE o UPDATE con criterios de búsqueda que se basen en los
valores devueltos en una sentencia SELECT no actualizable.
Para las sentencias SELECT de sólo lectura, especifique FOR FETCH ONLY, a no
ser que utilice VM y VSE, donde no reciben soporte.
Utilice el SQL estático siempre que sea posible. Impide la preparación de
secciones de SQL en tiempo de ejecución y los cursores ambiguos. Si no es
posible evitar el SQL dinámico, puede realiza lo siguiente para minimizar
el tráfico de la red y mejorar el rendimiento:
v Si se trata de una sentencia SELECT que debe prepararse, emita un
SQLDA PREPARE ... INTO. El SQLDA debería asignarse en el tamaño
completo necesario para sus valores. Si el número máximo de columnas
es x y se espera que continúe así, asigne un SQLDA con x SQLVAR. Si el
número posible de columnas es incierto (y la memoria no resulta ningún
problema), utilice el número máximo de SQLVAR (256).
Si la asignación de SQLDA carece del tamaño suficiente para almacenar
el SQLDA de devolución, el programa debe emitir otra sentencia
DESCRIBE con un SQLDA con el tamaño suficiente para volver a
almacenar el resultado. Esto aumentaría el tráfico de la red.
No utilice la secuencia PREPARE y DESCRIBE. Se consigue un mejor
rendimiento utilizando la sentencia PREPARE.....INTO.

Publicidad

Tabla de contenido
loading

Tabla de contenido