$users = User::all();
۱۰۰ کاربر؟
مشکلی نیست.
۱۰۰ هزار کاربر؟
هنوز شاید متوجه مشکل نشوید.
اما وقتی جدول به چند میلیون رکورد برسد، این Query میتواند:
❌ حجم زیادی از RAM را مصرف کند
❌ زمان Response را بالا ببرد
❌ فشار زیادی به Database وارد کند
❌ حتی باعث Timeout شدن Request شود
اگر فقط برای پردازش اطلاعات به رکوردها نیاز دارید، از پردازش تکهای استفاده کنید:
User::chunkById(1000, function ($users) {
foreach ($users as $user) {
// Process
}
});و اگر برای API فقط بخشی از دادهها را لازم دارید، Pagination یا Cursor Pagination انتخاب منطقیتری است.
🎯فضای Database را طوری Query نکن که انگار همیشه فقط ۱۰۰ رکورد دارد.
💡 کدی که امروز با ۱۰۰۰ رکورد عالی است، ممکن است فردا با ۱۰ میلیون رکورد تبدیل به یک Incident واقعی شود.
@CodeVerse_dev