Railsã§æ¡ä»¶ã«ä¸è´ããã¬ã³ã¼ãã1000ä»¶ã¥ã¤åå¾ãã¦å¦çãããã¤ãªãã ã£ã
Railsã§æ¡ä»¶ã«ä¸è´ããã¬ã³ã¼ãã1000ä»¶ã¥ã¤åå¾ãã¦å¦çãããã¤ãªãã ã£ã
çµè«
#find_each
find_each - リファレンス - - Railsドキュメント
ä»çµã¿ã¨ãããã¾
ã½ã¼ã¹
詳ããèªãã§ãªããã©ãprimary_keyã§sortãããã¨offsetã¨limitãæå®ãã¦ã¬ã³ã¼ããåå¾ããã®ãç¹°ãè¿ãã¦ããã£ã½ãã
ã¡ãªã¿ã«1000件以å¤ã®ä»¶æ°ãæå®ã§ããã
ã¡ãªã¿ã«èªã¿è¾¼ã¿éå§ä½ç½®ãæå®ã§ããã
# æå®ããbatch_sizeä»¶ã¥ã¤selectããã pry(main)> User.all.find_each(batch_size: 10).to_a User Load (1.0ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 10 User Load (4.5ms) SELECT `users`.* FROM `users` WHERE (`users`.`id` > 10) ORDER BY `users`.`id` ASC LIMIT 10 User Load (0.6ms) SELECT `users`.* FROM `users` WHERE (`users`.`id` > 20) ORDER BY `users`.`id` ASC LIMIT 10 ... # æå®ããbatch_sizeä»¶ã¥ã¤selectããããstart: 50ãæå®ããã®ã§id: 50以éãåå¾ãããã pry(main)> User.all.find_each(batch_size: 10, start: 50).to_a User Load (0.7ms) SELECT `users`.* FROM `users` WHERE (`users`.`id` >= 50) ORDER BY `users`.`id` ASC LIMIT 10 User Load (0.6ms) SELECT `users`.* FROM `users` WHERE (`users`.`id` > 59) ORDER BY `users`.`id` ASC LIMIT 10 User Load (0.6ms) SELECT `users`.* FROM `users` WHERE (`users`.`id` > 69) ORDER BY `users`.`id` ASC LIMIT 10 ...