Подскажите что делать с запросом

Автор kak2z, 19 апреля 2015, 16:45:00

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kak2z

Ребята.. помогите пожалуйста.. что я не так сделал??
сделал пагинацию, вывод тем.. все нормально.. но когда, допустим, переходишь на последнюю страницу в пагинации - то страница генерируется в 10 раз дольше чем если открываешь первую страницу..
Что делать?)

$result = $smcFunc['db_query']('', '
SELECT smf_topics.id_topic, smf_topics.id_board, smf_topics.id_first_msg, smf_topics.id_member_started, smf_topics.approved, smf_topics.num_views, smf_topics.num_replies, smf_topics.locked, smf_messages.id_msg, smf_messages.id_topic, smf_messages.id_board, smf_messages.id_member, smf_messages.subject, smf_messages.poster_name, smf_messages.body, smf_boards.id_board, smf_boards.name FROM smf_topics, smf_messages, smf_boards
WHERE
smf_topics.id_board IN ({array_int:boards_in}) AND
smf_topics.id_first_msg = smf_messages.id_msg AND
smf_topics.locked=0 AND
smf_boards.id_board=smf_topics.id_board AND
smf_topics.approved=1
ORDER BY smf_topics.id_topic DESC LIMIT
{int:start} , {int:entry_on_page}
',
array(
'start' => (int)$start,
'entry_on_page' => (int)$entry_on_page,
'boards_in' => array_values($boards_in),
));
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)


kak2z

Цитата: digger® от 19 апреля 2015, 17:20:31
Взять запрос для первой страницы и для последней и пропустить через explain.

вот что выдало.

индексов нет на smf_boards но она же небольшая табличка.
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

kak2z

#3
а вот первая страница


что скажете??  есть надежда?)
промониторил время генерации страниц...  чем больше номер страницы - тем больше ее время генерации))
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)


kak2z

Цитата: digger® от 19 апреля 2015, 21:48:56
Переписать запрос по нормальному с джойнами, добавить нужные индексы.
в общем не получилось у меня с join )))
сделал из этого запроса три простых запроса)) а потом их циклами соединяю)) стало в 10 раз быстрее))
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)