Какая операция дороже, вставка или выборка

«Какая операция дороже, вставка или выборка» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Вставка (INSERT) обычно дороже выборки (SELECT), так как требует:

  1. Проверки ограничений (constraints)
  2. Выделения места в памяти/на диске
  3. Обновления индексов
  4. Возможных блокировок

Пример с бенчмарком:

func BenchmarkInsert(b *testing.B) {
    db := setupDB()
    defer db.Close()

    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        db.Exec("INSERT INTO users(name) VALUES($1)", "test")
    }
}

func BenchmarkSelect(b *testing.B) {
    db := setupDB()
    defer db.Close()

    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        db.Query("SELECT * FROM users LIMIT 1")
    }
}

Выборка будет быстрее, особенно при наличии индексов. Однако стоимость зависит от структуры данных, индексов и объема информации.