оптимизация sql запроса

1 23
Оптимизайка
На сайте с 11.03.2012
Offline
396
#21
Mister_Black:
SELECT wp_posts.ID FROM wp_posts WHERE 1=1 AND ((wp_posts.post_title LIKE '%blah%') AND (wp_posts.post_title LIKE '%blah%') OR (wp_posts.post_title LIKE '%blah blah%')) AND (wp_posts.post_status = 'publish') ORDER BY wp_posts.post_date DESC LIMIT 10, 10;

like '%blabla%' не использует поиск по индексу, поэтому идет полное сканирование таблицы, и, соответственно, обращение к диску, который у вас - самое узкое место в системе, как мы видим.

Можно переписать этот запрос, используя Full Text Search, см. http://viralpatel.net/blogs/full-text-search-using-mysql-full-text-search-capabilities/ например, тогда будет все быстро.

Однако, странно, что таких запросов много в необычное время. Это обычно связано с поиском по сайту, а у вас, как я понял, активность пользователей минимальна в это время. Боты? ШколоDOS?

P.S. 1 = 1 в запросе - бессмысленно.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий