Depende de la situación.
Si usted va a ser la ejecución de varias declaraciones en una fila, entonces es mejor en cuanto al rendimiento de abrir una vez, ejecutar todas las declaraciones, y luego cerrarla,
Si eres preguntando por la apertura de la conexión cuando el programa se inicia y manteniéndola abierta hasta que el programa se cierra independientemente de lo que esté sucediendo, entonces no. Ciérrela tan pronto como haya terminado con ella. Es mejor no dejar una conexión abierta.
Otro factor en el que la gente nunca parece pensar es en el programador de mantenimiento, que tiene que rastrear el código y realizar un seguimiento de dónde se abre la conexión y cuándo se cierra. Digamos, por ejemplo, que tiene un programa que accede a una base de datos, luego se divide en varias otras funciones, cada una de las cuales puede necesitar la conexión. Seguir esas cosas en código es una pesadilla.
Por otra parte, este factor es secundario a la operación y el rendimiento adecuados, pero aún debe tenerse en cuenta en una aplicación compleja.
El factor principal es cómo afectará el rendimiento frente a la ventaja de mantener una conexión abierta. Debes decidir eso en cada situación.
Qué tipo de aplicación (Formularios, ASP.NET, etc.) y qué tipo de arquitectura (SOA, etc.) está utilizando, según David, dependerá. – StuartLC