タイトルはちょっと釣りっぽいかも。 たとえば配列に id が10万件位入っていて、コレを使って SQL の DELETE 文を発行してデータをパージしたい、とします。(仮にDELETEとしたけど、SELECT でも UPDATE でも一緒の話。DBの処理じゃなくても多分こういうのある)。 こういうとき、10万件一気に IN で指定すると、多分SQLが長過ぎてエラーになるし、もしエラーにならなくても遅いし、かといって 1件ずつ処理してもやっぱり遅いので、ふつうは何件かまとめて処理します。 仮に1000件毎に処理するとしましょう。 こういうとき、どうするか、というのが今日のお話。どうします? やり方はいくつかあると思うのですが、この場合僕は splice を使います。 my @ids = ... #10万件のidの配列 while ( my @sub_ids = splice(@ids, 0,