Tengo un informe que se basa en una función de base de datos. Para mí es la forma más cómoda de hacer consultas "parametrizadas". La consulta que le da datos es bastante "pesada" y tiene un cursor. Cuando la ejecuto en el "Analizador de consultas de SQLServer" tarda unos 10 segundos en devolver todos los registros, lo q considero un tiempo razonable porque hace un resumen de casi toda la base de datos.
Mi problema es que, el llamar a la misma función desde un programa (Visual Basic - sobre un recordset que luego se pasa a un informe de Crystal Report), el tiempo de respuesta se multiplica. Llega a tardar 3 minutos, y a veces más, la misma consulta que en analizador se resuelve en 10 segundos. Dentro de SQLServer, el proceso aparece dentro de "Administración - Actividad Actual - Bloqueos" (tanto de proceso como de objeto).
¿Alguien me podría dar alguna pista sobre esta diferencia de rendimiento entre un proceso llamado desde SQLServer y desde un programa? (No es problema del informe; la diferencia de tiempo se da ya al intentar llenar un recordset a partir de la consulta, antes de asignarlo al informe).
¿Hay alguna forma de resolverlo?
Gracias de antemano