Контекст
После #214 / #215 TicketLatest в action=comments больше не тянет Ticket.content (на большой базе ~4 с → ~1.7 с). Остаётся тяжёлый план запроса.
В tickets_threads уже есть comment_last и comment_time (TicketThread::updateLastComment()). Новая колонка не нужна.
Проблема
Сейчас (без &user) запрос идёт от TicketComment с join на Thread.comment_last, сортировка по TicketComment.createdon, плюс GROUP BY Ticket.id. На десятках тысяч веток это всё ещё дорого.
Цель
В action=comments без фильтра user:
- Ведущая таблица —
TicketThread (deleted = 0, comment_last > 0).
ORDER BY comment_time DESC + LIMIT до тяжёлых join’ов по смыслу плана.
- JOIN последнего комментария по
comment_last, затем Ticket (+ User/Profile).
- Убедиться, что в БД есть индекс по
comment_time (в schema поле с index="index", в map явного индекса в списке может не быть — проверить/добавить).
- Опционально: урезать default SELECT
Profile / Section под tpl.Tickets.comment.latest; расширение через &select.
Режим &user=… (все комментарии пользователя) и action=tickets не ломать.
Критерий
На той же базе, где после #215 было ~1.7 с, запрос заметно быстрее (ориентир: существенно ниже 1.7 с при том же limit / showLog).
Refs #214
Контекст
После #214 / #215
TicketLatestвaction=commentsбольше не тянетTicket.content(на большой базе ~4 с → ~1.7 с). Остаётся тяжёлый план запроса.В
tickets_threadsуже естьcomment_lastиcomment_time(TicketThread::updateLastComment()). Новая колонка не нужна.Проблема
Сейчас (без
&user) запрос идёт отTicketCommentс join наThread.comment_last, сортировка поTicketComment.createdon, плюсGROUP BY Ticket.id. На десятках тысяч веток это всё ещё дорого.Цель
В
action=commentsбез фильтраuser:TicketThread(deleted = 0,comment_last > 0).ORDER BY comment_time DESC+LIMITдо тяжёлых join’ов по смыслу плана.comment_last, затемTicket(+ User/Profile).comment_time(в schema поле сindex="index", в map явного индекса в списке может не быть — проверить/добавить).Profile/Sectionподtpl.Tickets.comment.latest; расширение через&select.Режим
&user=…(все комментарии пользователя) иaction=ticketsне ломать.Критерий
На той же базе, где после #215 было ~1.7 с, запрос заметно быстрее (ориентир: существенно ниже 1.7 с при том же
limit/showLog).Refs #214