@alst161

Почему создаются новые подключения к БД?

Столкнулся со следующей проблемой.
rows, err := db.Query("SELECT id,type,name FROM auto WHERE status=1")
checkErr(err)
defer rows.Close()
for rows.Next() {
      var id, type, id_type int
      var name string
      rows.Scan(&id, &type, &name)
      db.QueryRow("SELECT id FROM type WHERE id=$1",type).Scan(&id_type)
      .........
}

так вот при первом обращении к базе создаётся одно подключение, и при выполнении второго запроса образуется новое подключение. почему?
  • Вопрос задан
  • 347 просмотров
Пригласить эксперта
Ответы на вопрос 1
Пока не выполнилось rows.Close(), запрос к БД не закончен, подключение висит и тянет данные с БД по мере выполнения rows.Next().
Если не хотите создавать новые подключения, вам можно оптимизировать данную программу, заставив БД выдать вам нужные данные за один запрос. Используя выборку из нескольких таблиц, JOIN-ы или вложенные запросы на худой конец.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы