Sobes.tech

Golang

Desde el punto de vista del rendimiento, ¿qué reglas generalmente aceptadas se deben aplicar a dicho esquema de base de datos?

140

¿Por qué los desarrolladores de Go no garantizan el orden de recorrido del mapa durante el rango?

128

¿Qué hacer si hemos añadido todos los índices necesarios, pero la base de datos aún no puede manejar la carga y se ralentiza?

128

// GetUsersList devuelve una lista de usuarios. (en la base de datos almacenamos aproximadamente 1 millón de usuarios) // Se usa para mostrar la lista de usuarios en el panel de administración. Si isActive = true, solo se devuelven los usuarios activos. func (u *UsersRepo) GetUsersList(ctx context.Context, isActive bool) ([]User, error) { rows, err := u.DB.Query("SELECT id, name, phone FROM users WHERE is_active = ?", isActive) if err != nil { return nil, errors.New("error al obtener la lista de usuarios") } var users []User // Rellenar información sobre los usuarios. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Obtener la lista de correos electrónicos del usuario err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("error al obtener la lista de usuarios") } var emails []string for er.Next() { var email string err := rows.Scan(&email) if err != nil { return nil, err } emails = append(emails, email) } if len(emails) != 0 { for i, e := range emails { emails[i] = strings.ToLower(e) } } user.Emails = emails // Obtener información del perfil desde la API de VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("error al obtener la lista de usuarios") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("error al obtener la lista de usuarios") } }

107

-- listar los libros ordenados por id, -- pero en la salida intercambiar las filas 2 y 3: -- 1 El maestro y Margarita 100 -- 3 El perro de oro 50 -- 2 Los doce sillas 200 -- 4 Eugenio Oneguin 250 -- 5 Relatos de Belkin 90 -- 6 Los tres mosqueteros 60

101
/2