Tuve un problema similar con los procedimientos almacenados, y para mí resultó ser un "olfateo de parámetros". Busque eso en Google y vea si resuelve su problema, para mí fue una aceleración dramática una vez que lo arreglé.
En mi caso, lo arreglé declarando una variable local para cada parámetro que se pasó, y luego asigné la variable local a ese valor de parámetro, y el resto del proceso usó las variables locales para el procesamiento... por cualquier motivo, esto derrotó el rastreo de parámetros.