Lo primero que haría sería revisar el plan de ejecución a ver en qué se está "perdiendo" ese tiempo.
No parece una consulta lo bastante compleja para que el
Open tarde 10 minutos.
A partir de lo que diga el plan de ejecución se puede ver qué hacer exactamente.
De todas formas puedes revisar que:
- Las tablas tengan los índices correspondientes, sobre todo por los campos por los que haces JOIN
- Revisa si las LEFT JOIN, puedes convertirlas en INNER JOIN
- Prueba a utilizar cursor unidireccional y/o sólo lectura en el Dataset (Query). Si tienes la propiedad y si te sirve para el listado.
He asumido que lo que tarda es el Ooen, pero deberías asegurarte de que no sea el While el que está consumiendo el tiempo.