Xtwice Опубликовано 27 июня, 2016 Поделиться Опубликовано 27 июня, 2016 Нопейсал чота, кто бы покритиковал: Цитата 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-а во втором запросе будет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xtwice Опубликовано 27 июня, 2016 Поделиться Опубликовано 27 июня, 2016 ЗЫ перечислять поля с псевдонимом таблицы с "main." Ссылка на комментарий Поделиться на другие сайты Поделиться
rus Опубликовано 27 июня, 2016 Автор Поделиться Опубликовано 27 июня, 2016 Спасибо, но это лишнее.... Сейчас задача, изменить тип подключения на 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; Ссылка на комментарий Поделиться на другие сайты Поделиться
rus Опубликовано 27 июня, 2016 Автор Поделиться Опубликовано 27 июня, 2016 Уфф, с этим обновлением я уже замучился... Короче чтобы на innoDB перейти, нужно mysql до 5.6 обновить, не знаю, хостеры сделают или нет.... С обновдением индексов, пока пришлось только за последний месяц их сделать, так что поиск по форуму пока будет искать только на месяц назад. Как с базой разберусь, исправлю это... Главное, что завтра (надеюсь) всё будет работать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Буся Опубликовано 27 июня, 2016 Поделиться Опубликовано 27 июня, 2016 в innoDB свои заморочки имеются,надеюсь тебя минет чаща сия, а то ->VDS->dedicated server рано и поздно ггг)) Ссылка на комментарий Поделиться на другие сайты Поделиться
rus Опубликовано 27 июня, 2016 Автор Поделиться Опубликовано 27 июня, 2016 Когда форум не работает, у меня всё болит ни спать ни кушать не могу Ненавижу это Ссылка на комментарий Поделиться на другие сайты Поделиться
Буся Опубликовано 27 июня, 2016 Поделиться Опубликовано 27 июня, 2016 твоя беда длинные ветки аля болталка, там под поляма мессаг,айяйяй)) а у читывая что IPB сам по себе тяжеловес то вот такой вот пердимонокль)) Ссылка на комментарий Поделиться на другие сайты Поделиться
rus Опубликовано 27 июня, 2016 Автор Поделиться Опубликовано 27 июня, 2016 твоя беда длинные ветки аля болталка, там под поляма мессаг,айяйяй Да нет, хоть сколько, это не важно. Один раз надо кеш построить, а он сцуко получается под два гига, полтора лимона записей... И вот что-то не получилось автоматом, кеш после обновления так и не создался, пришлось его дропнуть и создать маленький, на месяц последний. Щас разберусь с базой, и попытаюсь опять полный создать... Ссылка на комментарий Поделиться на другие сайты Поделиться
Буся Опубликовано 27 июня, 2016 Поделиться Опубликовано 27 июня, 2016 кастрируй болталку, это единственный путь если не вдруг руки опустятся)) шя пока не тормозит Ссылка на комментарий Поделиться на другие сайты Поделиться
Буся Опубликовано 27 июня, 2016 Поделиться Опубликовано 27 июня, 2016 какое именно слово тебя возбудило так Луна?) хотя я догадываюсь какое))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Заархивировано
Эта тема находится в архиве и закрыта для дальнейших ответов.