自分のスクリプトでforeachからwhileに置き換えられるところは置き換えたんですが、その際に1つ疑問が出ました。

リファラのログを取ってて最大件数500件で、501件目が来たら古いリファラは削除して新しいリファラを追加するって処理の時に
現在が何件のログが貯まってるかを調べる時にはwhileだと一旦最後までループさしてカウンタをカウントアップさせて総数を得て、
その次にまたwhileで処理って感じになると思うんですが、

foreachでメモリに負担 なのと whileでDISK I/Oに負担とじゃ他のユーザーも同時に使ってるサーバー上ではどの処理がやさしいんでしょか?

今までforeachしか使ってなくてそれを否定された感があってちょっと自信難儀に陥ってまして助言とか意見があれば参考にしたいと思います。