▶️ Дивіться відеоурок (6 хвилин)
Ви завантажуєте 10 000 замовлень у пам'ять лише для того, щоб обчислити підсумки. Ваш сервер навантажений, користувачі чекають, а є кращий спосіб. Що, якби база даних могла виконати всі ці обчислення за мілісекунди, не споживаючи цінний обсяг пам’яті?
У цьому випуску "Laravel In Practice" я покажу, як перенести обчислення з PHP колекцій до SQL агрегацій, зберігаючи чистоту архітектури. Ви дізнаєтеся, як створити OptimizedSalesReportService, який використовує Query Builder замість Eloquent колекцій, використовувати функції SQL SUM() і COUNT() для обчислення підсумків на рівні бази даних, а також використовувати правильні з'єднання, щоб уникнути N+1 запитів під час агрегації даних.
Результат? Така сама бізнес-логіка тепер виконується з мінімальним споживанням пам'яті. Замість завантаження тисяч замовлень у PHP масиви, база даних виконує важку роботу там, де це оптимізовано для таких операцій. Ви побачите, як GROUP BY з SELECT RAW перетворює ресурсоємні методи колекцій на ефективні SQL запити.
Це продовження нашої подорожі з оптимізації продуктивності, побудованої на покращеннях індексів з випуску 6. Ми не відмовляємось від чистої архітектури з першого сезону — ми створюємо оптимізований сервіс, який доповнює нашу оригінальну реалізацію, надаючи вам найкраще з обох світів: чистий код і неймовірну продуктивність.
Якщо ви працюєте з великими наборами даних або просто хочете більш ефективний код, ці техніки можуть змінити гру. Ви зрозумієте, коли використовувати Query Builder замість Eloquent, як писати продуктивні агрегації за допомогою selectRaw(), і чому перенесення обчислень у базу даних суттєво покращує швидкість і споживання пам’яті.
Стратегії оптимізації SQL, які ми впроваджуємо тут, завершують наші покращення на рівні бази даних. У наступному випуску ми додамо розумне кешування на основі цих оптимізацій для ще кращої продуктивності.