Prepared statements в database/sql. Кеширование.

Ответ

Prepare возвращает sql.Stmt; при повторных вызовах один запрос разбирается один раз. DB кеширует подготовленные запросы по строке; при Prepare драйвер может вернуть закешированный. В высоконагруженных сценариях явный Stmt может быть полезен; обычно достаточно Query/Exec с параметрами - драйвер сам кеширует. Stmt нужно закрывать (Stmt.Close) при освобождении.

stmt, _ := db.PrepareContext(ctx, "SELECT name FROM users WHERE id = $1")
defer stmt.Close()
row := stmt.QueryRowContext(ctx, id)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.