Перейти к содержанию

[Новости]Форум обновляется


rus

Рекомендуемые сообщения

Нопейсал чота, кто бы покритиковал:

Цитата

SELECT main.* 
FROM `ibf_core_search_index` AS `main` FORCE INDEX(`index_date_updated`) 
WHERE 
/* нихрена не понял зачем этот блок нужен, когда ниже обязательно выполняется такой же, но с доп условием
       ( ( index_class IN('IPS\\core\\Statuses\\Status','IPS\\core\\Statuses\\Reply') ) 
        OR index_class='IPS\\forums\\Topic\\Post' 
        OR ( index_class IN('IPS\\calendar\\Event','IPS\\calendar\\Event\\Comment','IPS\\calendar\\Event\\Review') ) )  
AND*/( ( ( index_class IN('IPS\\core\\Statuses\\Status','IPS\\core\\Statuses\\Reply') ) AND index_is_last_comment=1 ) 
        OR ( index_class='IPS\\forums\\Topic\\Post' AND index_is_last_comment=1 ) 
        OR ( ( index_class IN('IPS\\calendar\\Event','IPS\\calendar\\Event\\Comment') ) AND index_is_last_comment=1 ) 
        OR index_class IN('IPS\\calendar\\Event\\Review')) -- из первого блока 
AND ( index_permissions = '*' 
        OR ( ( FIND_IN_SET(9,index_permissions) 
        OR FIND_IN_SET('m14842',index_permissions) ) ) ) 
AND index_hidden=0
AND CONCAT(index_item_id,index_class) IN(SELECT DISTINCT CONCAT(index_item_id,index_class) 
                                         FROM `ibf_core_search_index` AS `sub` 
                                         WHERE index_author=14842) 
/* не прочухал зачем здесь подзапрос с дистинктом из той же таблицы что и `main' переписал бы на "AND index_author=14842"
но не уверен, что не обрежутся нужные записи*/
ORDER BY index_date_updated DESC LIMIT 0,25

 

Или даже так (но тут надо явно перечислять все поля из "main"):

Цитата

SELECT main.* -- вместо этого перечисление полей таблицы  ibf_core_search_index
FROM `ibf_core_search_index` AS `main` FORCE INDEX(`index_date_updated`)
INNER JOIN (SELECT DISTINCT index_item_id, index_class 
            FROM `ibf_core_search_index`  
            WHERE index_author=14842) AS `sub` ON CONCAT(sub.index_item_id,sub.index_class) =  CONCAT(main.index_item_id,main.index_class)  
WHERE 
( ( ( main.index_class IN('IPS\\core\\Statuses\\Status','IPS\\core\\Statuses\\Reply') ) AND main.index_is_last_comment=1 ) 
        OR ( main.index_class='IPS\\forums\\Topic\\Post' AND main.index_is_last_comment=1 ) 
        OR ( ( main.index_class IN('IPS\\calendar\\Event','IPS\\calendar\\Event\\Comment') ) AND main.index_is_last_comment=1 ) 
        OR main.index_class IN('IPS\\calendar\\Event\\Review')) -- из первого блока 
AND ( main.index_permissions = '*' 
        OR ( ( FIND_IN_SET(9,main.index_permissions) 
        OR FIND_IN_SET('m14842',main.index_permissions) ) ) ) 
AND main.index_hidden=0
ORDER BY main.index_date_updated DESC LIMIT 0,25

 

Но с MySQL не работал, не знаю какая стоимость join-а во втором запросе будет.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, но это лишнее....

 

Сейчас задача, изменить тип подключения на InnoDB.

 

Правильный запрос? Я его скопипастил, сам вставил только строчку где с определенным префиксом таблицы выбираются, а то ругается, у меня там ещё Вордпрессовские есть.

 

SET @DATABASE_NAME = 'ipb3new_olgino_net';

SELECT  CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements
FROM    information_schema.tables AS tb
WHERE   table_schema = @DATABASE_NAME
AND     `ENGINE` = 'MyISAM'
AND     `TABLE_TYPE` = 'BASE TABLE'
AND     table_name LIKE 'ibf\_%'
ORDER BY table_name DESC;

Ссылка на комментарий
Поделиться на другие сайты

Уфф, с этим обновлением я уже замучился...

Короче чтобы на innoDB перейти, нужно mysql до 5.6 обновить, не знаю, хостеры сделают или нет....

С обновдением индексов, пока пришлось только за последний месяц их сделать, так что поиск по форуму пока будет искать только на месяц назад.

Как с базой разберусь, исправлю это...

 

Главное, что завтра (надеюсь) всё будет работать.

Ссылка на комментарий
Поделиться на другие сайты

твоя беда длинные ветки аля болталка, там под поляма мессаг,айяйяй)) а у читывая что IPB сам по себе тяжеловес то вот такой вот пердимонокль))

Ссылка на комментарий
Поделиться на другие сайты

твоя беда длинные ветки аля болталка, там под поляма мессаг,айяйяй

Да нет, хоть сколько, это не важно.

Один раз надо кеш построить, а он сцуко получается под два гига, полтора лимона записей...

И вот что-то не получилось автоматом, кеш после обновления так и не создался, пришлось его дропнуть и создать маленький, на месяц последний.

Щас разберусь с базой, и попытаюсь опять полный создать...

Ссылка на комментарий
Поделиться на другие сайты

Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...