Du point de vue des performances, quelles règles généralement acceptées doivent être appliquées à un tel schéma de base de données?
Golang
Que faire si nous avons ajouté tous les index nécessaires, mais la base de données ne peut toujours pas gérer la charge et ralentit?
Pourquoi les développeurs de Go ne garantissent-ils pas l'ordre de parcours de la carte lors du range?
// GetUsersList retourne une liste d'utilisateurs. (dans la base de données, nous stockons environ 1 million d'utilisateurs) // Utilisé pour afficher la liste des utilisateurs dans le panneau d'administration. Si isActive = true, seules les utilisateurs actifs sont retournés. 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("erreur lors de la récupération de la liste des utilisateurs") } var users []User // Remplir les informations sur les utilisateurs. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Obtenir la liste des e-mails de l'utilisateur err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("erreur lors de la récupération de la liste des utilisateurs") } 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 // Obtenir des informations sur le profil depuis l'API VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("erreur lors de la récupération de la liste des utilisateurs") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("erreur lors de la récupération de la liste des utilisateurs") } }
-- afficher la liste des livres triés par id, -- mais échanger les lignes 2 et 3 dans l'affichage: -- 1 L'idiot et Margarita 100 -- 3 Le Tolenok d'or 50 -- 2 Les Douze Chaises 200 -- 4 Eugène Oneguine 250 -- 5 Contes de Belkin 90 -- 6 Les Trois Mousquetaires 60