limit() - не завантажувати непотрібне
При завантаженні 50,000 записів для показу 10 на екрані.
Додаток зависає. Серверу бракує пам'яті. Користувач закриває браузер через 30 секунд.
Проблема:
Без limit(), Eloquent завантажує все в пам'ять. Пагінація допомагає, але все одно потрібен limit() в багатьох випадках.
Коли використовувати:
- Попередні перегляди та зразки
- Останні N елементів
- Топ виконавці
- Будь-який сценарій "показати перші декілька"
Порада: Поєднуй з orderBy() для консистентних результатів. Без сортування limit() повертає випадкову підмножину.
// ПОГАНО: Завантажує все
$products = Product::where('active', true)->get();
// Повертає 50,000 продуктів в пам'яті
// ДОБРЕ: Тільки те що потрібно
$featured = Product::where('featured', true)
->orderBy('created_at', 'desc')
->limit(5)
->get();
// Останні 10 замовлень
$recent = Order::latest()->limit(10)->get();
// Топ 3 користувачі за балами
$leaders = User::orderBy('points', 'desc')->limit(3)->get();
// Попередній перегляд дашборду
$stats = [
'recent_orders' => Order::latest()->limit(5)->get(),
'top_products' => Product::orderBy('sales', 'desc')
->limit(10)->get(),
'new_users' => User::latest()->limit(20)->get(),
];
// Без orderBy - непередбачувані результати
$random = Post::limit(5)->get(); // ПОГАНО
$latest = Post::latest()->limit(5)->get(); // ДОБРЕ