
рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд░реЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рджреМрд░рд╛рди рдореИрдВрдиреЗ рдХрдИ рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреЗрдЦреЗ рд╣реИрдВ, рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░реВрдмреА рдХреЛрдб рднреА рдкрдврд╝реЗ рдФрд░ рд▓рд┐рдЦреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдВ 5 рд╕рдмрд╕реЗ рдЖрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рд╣рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рджреЗрдЦреА рд╣реИрдВред
1. рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╡рд╛рд╕рди
рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рджрд┐рд▓ рд╣реИред рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдмрд┐рдирд╛, рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдмрдЧ рдХреЗ рдХрд╛рд░рдг, рдбреЗрдЯрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рднреА рдлрд╝реАрд▓реНрдб рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣рд╛рдБ
рд╕рдВрдкрд░реНрдХ рдореЙрдбрд▓ рдХрд╛ рдЖрд░реЗрдЦ рд╣реИ:
create_table "contacts" do |t| t.integer "user_id" t.string "name" t.string "phone" t.string "email" end
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЧрд╛рдпрдм рд╣реИ? рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐
рд╕рдВрдкрд░реНрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ) рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ (
rel_to ) рдФрд░ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред "
: Null => false " рдЬреЛрдбрд╝рдХрд░ рд╣рдо рд╣рдореЗрд╢рд╛ рдореЙрдбрд▓ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдВрдЧреЗ, рднрд▓реЗ рд╣реА рд╣рдорд╛рд░реЗ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рдореЗрдВ рдХреАрдбрд╝реЗ рд╣реЛрдВ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреБрдж рд╣рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ рдЬреЛ рдЗрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред
create_table "contacts" do |t| t.integer "user_id", :null => false t.string "name", :null => false t.string "phone" t.string "email" end
рдмреЛрдирд╕ рд╕рдВрдХреЗрдд : рдЕрдкрдиреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝реАрд▓реНрдб рдХреЗ рдЙрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "
: limit => N " рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд▓рд╛рдЗрди рдХреА рд▓рдВрдмрд╛рдИ 255 рд╡рд░реНрдгреЛрдВ рдкрд░ рд╕реЗрдЯ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж "
рдлреЛрди " рдлрд╝реАрд▓реНрдб рдХреЛ рдЗрд╕ рдЖрдХрд╛рд░ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ?
2. рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд░реВрдмреА рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╡реЗ рд╡рд╛рдВрдЫрд┐рдд рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдореЙрдбрд▓ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рдПрдорд╡реАрд╕реА-рдЙрдиреНрдореБрдЦ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде "lib" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдирд╣реАрдВред рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкрддрд╛ рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ 2-3 рд╕рд╛рд▓ рддрдХ рд░рд╣рддрд╛ рд╣реИ: тАЬрд░реЗрд▓ рд╕рд┐рд░реНрдл рд░реВрдмреА рд╣реИред рдореИрдВ рд╕рд╛рдзрд╛рд░рдг рд╡рд╕реНрддреБрдПрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╣ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдЬреИрд╕рд╛ рд╡рд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред "
рдмреЛрдирд╕ рд╕рдВрдХреЗрдд : рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП facades рдмрдирд╛рдПрдВред рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдЦреМрдЯрд╛-рдирдХрд▓реА рдмрдирд╛рдПрдВ, рддрд╛рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рди рдЦреАрдВрдЪрд╛ рдЬрд╛рдПред
3. рд╕рд╣рд╛рдпрдХреЛрдВ рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЙрдиреНтАНрдЯреЗрдиреЗрдЯреЗрд╢рди
рдпрджрд┐ рдЖрдк рд╕рд╣рд╛рдпрдХ рддрд░реАрдХреЗ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рд╣реИ!) рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдЖрдк рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд╕рд╛рдл рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдмрд╛рд░, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЯреИрдЧ рдмрдирд╛рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЪрд┐рдкрдХреЗ рд╣реБрдП рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдПрдХ рд╣реИрд╢ рд╣реЛрддрд╛ рд╣реИред
str = "<li class='vehicle_list'> " str += link_to("#{vehicle.title.upcase} Sale", show_all_styles_path(vehicle.id, vehicle.url_title)) str += " </li>" str.html_safe
рдЯрд┐рди! рдпрд╣ рдмрджрд╕реВрд░рдд рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ XSS рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
content_tag рдЖрдкрдХрд╛ рджреЛрд╕реНрдд рд╣реИ!
content_tag :li, :class => 'vehicle_list' do link_to("#{vehicle.title.upcase} Sale", show_all_styles_path(vehicle.id, vehicle.url_title)) end
рдмреЛрдирд╕ рд╕рдВрдХреЗрдд : рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рд╣рд╛рдпрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдиреЗрд╕реНрдЯреЗрдб HTML рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдиреЗрд╕реНрдЯреЗрдб рдмреНрд▓реЙрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╣реИрдВред
4. рд╡рд┐рд╢рд╛рд▓ рдкреНрд░рд╢реНрди рд╕рдм рдХреБрдЫ рд╕реНрдореГрддрд┐ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ
рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдореЗрдВ рдХреБрдЫ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдмрд╕ рдЙрди рд╕рднреА рдХреЛ рдПрдХ рд▓реВрдк рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ?
User.has_purchased(true).each do |customer| customer.grant_role(:customer) end
рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕рд╛рдЗрдЯ рдФрд░ рдПрдХ рдорд┐рд▓рд┐рдпрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ 500 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рджреЗрдВред рдЖрдкрдХрд╛ рдХреЛрдб 500 рдПрдордмреА рдореЗрдореЛрд░реА рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк:
User.has_purchased(true).find_each do |customer| customer.grant_role(:customer) end
find_each рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ
find_in_batches рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдмрд╛рд░ рдореЗрдВ 1000 рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░рддрд╛ рд╣реИред
рдмреЛрдирд╕ рд╕рдВрдХреЗрдд : рдмрд▓реНрдХ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
update_all рдпрд╛ рдирдВрдЧреЗ SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред SQL рдХреЛ рд╕реАрдЦрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рд▓рд╛рдн рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдВрдЧреЗ: x100 рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ред
5. рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛
рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк GitHub рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рдпрд╣ рднреА рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкреВрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ
рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рджреЛ рджрд┐рди рдмрд┐рддрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдореЗрдВ рдХрд░реЗрдВ рдФрд░ рдкреВрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрдкрдХреА рдЯреАрдо рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреА, рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреА рдУрд░ рднреА рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ред
рдмреЛрдирд╕ рд╕рдВрдХреЗрдд : рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд┐рдирд╛ рдкреВрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рди рдХрд░реЗрдВ рдЬреЛ рд╕рдлрд▓ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╕реНрдерд┐рд░ рд░рдЦрдиреЗ рдФрд░ рдЖрдкрдХреА рдЖрд░рд╛рдорджрд╛рдпрдХ рдиреАрдВрдж рдХреЗ рд▓рд┐рдП рдЕрдореВрд▓реНрдп рд╣реИред
рдмреЛрдирд╕: рдореВрд▓ рд▓реЗрдЦ рдкрд░ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
find_each рдФрд░
find_in_batches рдмрдбрд╝реЗ рдЪрдпрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрдж
рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЛрд░реА рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рд╛рдЗрдХрд▓ рдореЗрдВ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ 1'000'000 рд░рд┐рдХреЙрд░реНрдб рд▓реМрдЯрд╛рддреА рд╣реИред
SELECT * FROM users WHERE unindexed_field = true;
рдпрджрд┐ рдЖрдк
User.all.each рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХ рдмрдбрд╝реА рдХреНрд╡реЗрд░реА рдХрд░реЗрдЧрд╛, рдПрдХ рдмрд╛рд░ рдореЗрдВ рдкреВрд░реЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк
User.where (...)ред Find_each (: batch_size => 100) рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдорд╛рди рдХреНрд╡реЗрд░реА 1'000'000 / 100 = 10'000 рдмрд╛рд░ рдХрд░рдиреА рд╣реЛрдЧреАред рдФрд░ рдпрджрд┐ рдЖрдк MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╣рд░ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ред рдпрд╛рдиреА рд░рд┐рдХреЙрд░реНрдб 100-200 рдХреЗ рд▓рд┐рдП рд╡рд╣ рдкрд╣рд▓реЗ 200 рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛, 200-300 рдХреЗ рд▓рд┐рдП - рдкрд╣рд▓реЗ 300 рд░рд┐рдХреЙрд░реНрдб, рдлрд┐рд░ 300-400 рдХреЗ рд▓рд┐рдП - рдкрд╣рд▓реЗ 400 рд░рд┐рдХреЙрд░реНрдб рдФрд░ рдЗрддрдиреЗ рдкрд░ 999900-1000000 рддрдХред
рдЗрд╕рд▓рд┐рдП рдмрдбрд╝реЗ рдЪрдпрдиреЛрдВ рдХреЗ рд▓рд┐рдП,
find_each рдпрд╛
find_in_batches рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдПрдБ рднреА рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп "рд╣реИрдХ" рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
ids = User.where(...).select(:id).all ids.in_groups_of(100) do |id_group|