|
De verdad, gracias jachguate por tus consejos, aunque creo que no podré aplicarlos porque la condición a evaluar (que puede ser múltiple) no veo la manera de parametrizarla. Es demasiado variable, y no sabríamos ni siquiera el nro. de parámetros a usar. Necesitaria preprocesar la condición para saber el nro. (y tipo) de los parámetros y eso no resultaría eficiente.
Apuntaré tu comentario sobre la shared pool acerca de la tabla dual. De todos modos crear una tabla unicamente para este propósito... no sé. Supongo que haré pruebas, como siempre, antes de decidirme. No estoy seguro tampoco de que de esta manera aproveche la cache pues tengo entendido de que la optimización se consigue cuando la consulta a analizar por el motor es identica a la almacenada en la cache y dada la disparidad de consultas SQL que va a lanzar mi rútina no creo que se logre aprovechar en alguna manera de la cache. Por tus comentarios y por los de delphi.com.ar (en otro hilo) he aprendido que el uso de parámetros facilita la entrada de la consulta en la caché , algo que no sabía y que puede serme muy útil. Si sabeís de algo sobre la shared pool adicional os agradecería que lo comentaraís.
¿El motivo de esta rútina? Por si tienes curiosidad: imagina una relación maestro detalle con dos tablas 1:N. Bien, necesitamos recuperar por cada registro de la tabla maestra un único (o ninguno, pero no más) registro de la tabla detalle. Y este único registro es el único cuya condición (que se guarda en un campo) se cumple. Necesitamos un cursor que recorre los registros de la tabla detalle y que vaya evaluando sus condiciones hasta encontrar el que se cumple.
Saludos y gracias por la ayuda.
|