У меня нет полного контекста вашей ситуации, чтобы понять соображения производительности. Да, запуск нового соединения может считаться тяжелым, если вы работаете с жесткими временными ограничениями, короткими относительно времени, которое требуется для установки нового соединения, и вы были вынуждены делать это для каждого запроса ...
Но вы можете уменьшить это с помощью общего подключения пула , которое вы создаете заранее, а затем распределить ваши запросы (в отдельных потоках) по этим соединениям, если позволяют ресурсы.
С другой стороны с другой стороны, если все время вашего запроса достаточно велико по сравнению со временем, которое требуется для создания нового соединения, и вы не собираетесь выполнять больше нескольких запросов параллельно, то это может быть разумным вариантом для создания соединений по требованию. Просто имейте в виду, что вы будете сталкиваться с ограничениями по количеству открытых соединений, если вы попытаетесь слишком много сделать go, а также с ограничениями ресурсов в самой системе базы данных. Вы, вероятно, не хотите делать что-то подобное с общей базой данных. Опять же, это только разумный вариант в некоторых очень специфических c контекстах.