Sobes.tech

Өнімділік тұрғысынан, мұндай дерекқор схемасына қандай жалпы ережелер қолданылуы керек?

140

Go әзірлеушілері неге range кезінде карта бойынша өту тәртібін кепілдік бермейді?

128

Барлық қажетті индекстер қосылған болса да, дерекқор жүктемені көтермей, баяулап жатса, не істеу керек?

128

// GetUsersList пайдаланушылар тізімін қайтарады. (дерекқорда шамамен 1 миллион пайдаланушы сақталады) // Бұл әкімшілік панельде пайдаланушылар тізімін көрсету үшін пайдаланылады. Егер isActive = true болса, тек белсенді пайдаланушылар қайтарылады. 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("пайдаланушылар тізімін алу кезінде қате") } var users []User // Пайдаланушылар туралы ақпаратты толтырайық. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Пайдаланушының электронды пошта тізімін аламыз err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("пайдаланушылар тізімін алу кезінде қате") } 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 // ВКонтакте API-інен профиль туралы ақпаратты аламыз profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("пайдаланушылар тізімін алу кезінде қате") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("пайдаланушылар тізімін алу кезінде қате") } }

107

-- кітаптар тізімін id бойынша сұрыптап шығарыңыз, -- бірақ шығару кезінде 2 және 3 жолды ауыстырыңыз: -- 1 Мастер и Маргарита 100 -- 3 Золотой теленок 50 -- 2 Двенадцать стульев 200 -- 4 Евгений Онегин 250 -- 5 Повести Белкина 90 -- 6 Три мушкетера 60

101
/2