Sobes.tech

Golang

Vanuit prestatieoogpunt, welke algemeen aanvaarde regels moeten worden toegepast op zo'n databasemodel?

140

Waarom garanderen de Go-ontwikkelaars niet de volgorde van het doorlopen van de map tijdens range?

128

Wat te doen als we alle benodigde indexen hebben toegevoegd, maar de database nog steeds niet aankan en vertraagt?

128

// GetUsersList retourneert een lijst met gebruikers. (In de database slaan we ongeveer 1 miljoen gebruikers op) // Wordt gebruikt om de gebruikerslijst weer te geven in het beheerderspaneel. Als isActive = true, worden alleen actieve gebruikers geretourneerd. 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("fout bij het ophalen van de gebruikerslijst") } var users []User // Vul informatie over gebruikers in. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Haal de lijst met e-mails van de gebruiker op err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("fout bij het ophalen van de gebruikerslijst") } 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 { e = strings.ToLower(e) emails[i] = e } } user.Emails = emails // Haal het profiel op via de VK API profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("fout bij het ophalen van de gebruikerslijst") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("fout bij het ophalen van de gebruikerslijst") } }

107

-- lijst de boeken op gesorteerd op id, -- maar verwissel in de output regel 2 en 3: -- 1 Meester en Margarita 100 -- 3 De gouden Telenok 50 -- 2 De twaalf stoelen 200 -- 4 Eugen Onegin 250 -- 5 Verhalen van Belkin 90 -- 6 De drie musketiers 60

101
/2