▶️ Перегляньте відеоурок (6 хвилин)
Різке покращення продуктивності вашої панелі Laravel - Laravel In Practice EP6
Ваша панель здійснює понад 400 запитів, але вирішення цієї проблеми простіше, ніж здається. А що, якби я сказав вам, що кілька стратегічних змін можуть знизити цю кількість до 4 запитів та зменшити час відповіді з 180 мс до 40 мс?
У цьому епізоді Laravel In Practice я покажу, як позбутися N+1 запитів та додати стратегічні індекси в базі даних, не порушуючи чисту архітектуру. Ви навчитеся виправляти метод визначення найкращих клієнтів, який генерував сотні запитів, використовуючи loadMissing() та таблиці для пошуку. Додамо складні індекси до частовикористовуваних колонок, таких як статус та user_id, а також використаємо плани запитів EXPLAIN для перевірки результативності ваших оптимізацій.
Результат? Кількість запитів на вашій панелі скорочується з понад 400 до лише 4. Ваша повільна завантаження у 187 мс стає швидкою - лише 53 мс. Ви побачите, як індекси дозволяють SQL переходити безпосередньо до відповідних рядків, а не сканувати всю таблицю, і як перевірити ці покращення за допомогою тестових маршрутів, які вимірюють реальні збільшення продуктивності.
Це продовжує наш шлях до оптимізації продуктивності, систематично усуваючи проблеми N+1, про які ми дізналися за допомогою Telescope в епізоді 5. Ніяких складних переписувань - лише розумніше використання loadMissing() для уникнення зайвого завантаження зв’язків і стратегічні індекси, додані через просту міграцію.
Навіть якщо ви налагоджуєте повільну панель або запобігаєте майбутнім заторам, ці техніки є незамінними. Ви дізнаєтеся, як створювати таблиці для пошуку, які запобігають зайвій ітерації, коли використовувати складні індекси для запитів з кількома колонками, і як довести ефективність ваших оптимізацій, використовуючи функції пояснення бази даних Laravel.
Оптимізації запитів та стратегії індексування, які ми реалізуємо тут, досягають 4.5-кратного підвищення продуктивності - і це лише початок. У наступному епізоді ми підемо ще далі, перемістивши обчислення на рівень бази даних.