В дополнение к тому, что @mkopriva сказал в комментариях о клиентской стороне, есть серверная возможность использования подготовленных операторов.
Важно отметить, что использование *sql.DB
использует пул соединений :
БД - это дескриптор базы данных, представляющий пул из нуля или более базовых соединений
Почему это важно? Хорошо параллельный доступ может инициировать несколько физических соединений. А при использовании подготовленных операторов, которые предназначены для повторного использования, они эффективны только при использовании в том же сеансе базы данных (т.е. соединение).
Пул соединений (используя *sql.DB
) его природа не гарантирует этого. Таким образом, при 100 одновременных запросах - теоретически может быть 100 одновременных соединений с базой данных, генерирующих - не один - но до 100 подготовленных операторов на на стороне сервера .
Вы можете получить одно соединение с БД через sql .DB.Conn () , где:
Запросы, запущенные на том же Conn, будут выполняться в той же базе данных сеанс.
означает, что любой ранее сгенерированный подготовленный оператор получит преимущества от повторного использования (так как они используют один и тот же "сеанс").
В заключение, взвесьте преимущества подготовленного оператора. заявление о влиянии клиента и на сервер, а также о том, действительно ли вы получаете эти преимущества от одновременного использования.