Добрый вечер!
У меня есть ресурс на облачном хостинге. Там есть скрипт поиска. Идет поиск по нескольким таблицам, но FULLTEXT индекс только у одного поля ( articles.article_text_for_search ). Объемы текстов по которым ведется поиск — большие. Количество записей в articles — 3 000
Дело в том, что когда работает скрипт search.php ( а это около 8-ми секунд ) — то остальные страницы с сайта, если их попробовать загрузить — сразу не отдаются. Отдаются только когда скрипт search.php начинает отдавать контент в браузер…
Хостер говорит, что это я виноват. И больше ничего не говорит. Я не гуру mysql, но как SELECT запросы могут мешать отдачи контента? ( LOCK Tables не использую, тип таблиц везде — MyISAM )
SELECT articles.id<br>
, articles.magazine_id<br>
, articles.issue_id<br>
, articles.article_name<br>
, articles.annotation<br>
, articles.article_text<br>
, SUBSTRING( articles.article_text, 1, 1000) as article_text_1<br>
, articles.section_id<br>
, articles.article_rating<br>
, articles.to_main<br>
, articles.article_unix_add<br>
, magazines.mag_name<br>
, magazines_issues.issue_number<br>
, GROUP_CONCAT( users.user_name ) AS user_names<br>
, GROUP_CONCAT( users.user_surname ) AS user_surnames<br>
, GROUP_CONCAT( tags.tag_name ) AS tag_names<br>
, sections.sec_name<br>
, CONVERT( GROUP_CONCAT( articles_authors.author_id ) USING utf8 ) AS author_ids<br>
, CONVERT( GROUP_CONCAT( articles_tags.tag_id ) USING utf8 ) AS tag_ids<br>
FROM magazines, users, sections, articles_authors<br>
JOIN articles<br>
LEFT JOIN magazines_issues<br>
ON articles.issue_id = magazines_issues.id<br>
LEFT JOIN articles_tags ON articles.id = articles_tags.article_id<br>
AND articles_tags.status = 'active'<br>
LEFT JOIN tags ON tags.id = articles_tags.tag_id<br>
WHERE <br>
(<br>
articles.article_name LIKE '%интересная статья%'<br>
OR MATCH (articles.article_text_for_search) AGAINST ('"интересная статья"' IN BOOLEAN MODE)<br>
OR users.user_name LIKE '%интересная статья%'<br>
OR users.user_surname LIKE '%интересная статья%'<br>
OR magazines.mag_name LIKE '%интересная статья%'<br>
)<br>
AND articles.magazine_id = magazines.id<br>
AND users.id = articles_authors.author_id<br>
AND articles.section_id = sections.id<br>
AND articles.article_status = 'published'<br>
AND articles_authors.article_id = articles.id<br>
AND articles_authors.status = 'active'<br>
GROUP BY articles.id<br>
LIMIT 0, 30<br>