Об определенной c PHP & MySQLCode Performance Logi c Помощь - PullRequest
0 голосов
/ 12 февраля 2020

Я использую Laravel 6 для одного из моих приложений. Я застрял в проблеме производительности для страницы публикации в моем приложении.

Самая популярная страница - это страница публикации в моем приложении. Обычно страница поста имеет:

  • Содержание PostPage,
  • Комментарии содержимого поста и подкомментарии (в виде дерева) для всех комментариев,
  • и комментарий нравится, рейтинг (понравился ли этот комментарий пользователю) снова для всех комментариев

Например: если на странице +10 комментариев, приложение будет медленно и mysqld высоко.

Пример для SQL Запрос в моем блоке кода:

 SELECT `comments`.`id`, `comments`.`comment`, `comments`.`parent_id`, `comments`.`date`,
 `comments`.`ratingN`, `comments`.`ratingP`, `rating`.`rate`, `users`.`photo`, 
 `users`.`photo2`, `users`.`username`, `users`.`gold_end`,  
 (CASE WHEN rating.id_user = 7 THEN 1 ELSE 0 END) as liked   

 FROM `comments` 
 inner join `users` on `comments`.`id_user` = `users`.`id` 
 left join `rating` on `rating`.`id_comment` = `comments`.`id` 
 where `parent_id` = 284162 and `status` = 1 
 group by `comments`.`date` order by `date` asc

Я использую (запрос) кэш, но снова первое открытие и после любого обновления страница публикации работает медленно, потому что сторона комментариев. Использование объединений.

  • Я называю главные комментарии , и тогда, посмотрите, что mainComments имеет какие-либо подкомментарии ,
  • Комментарии нравится этому участнику ?

PHP 7,2, MySQL 5,7

Что вы предлагаете?

1 Ответ

0 голосов
/ 13 февраля 2020

Эти составные индексы могут помочь:

comments:  INDEX(parent_id, status, date)
rating:  INDEX(id_comment, id_user, rate)
users:  I assume you have `PRIMARY KEY(Id)`?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...