Всем привет и с наступившим Новым годом!
Пока у меня выдалось довольно много свободного времени, я решил в праздники не обжираться салатами и не деградировать у телевизора, а заняться чем-то полезным — привести свои проекты в порядок и подготовить их к зарабатыванию бабосиков.
Первое, что нужно было сделать — это обновить старые сайты, которым уже по 2–3 года, и привести их в более-менее вменяемый вид.
Один из таких сайтов — https://rus-bel.online/
В своё время это был очень мощный и крутой проект, который приносил нам с партнёром нормальные деньги, когда мы находились в Яндекс.Новостях. У сайта хорошая история, нормальная ссылочная, статьи туда залетают в индекс без проблем — этим реально можно и нужно пользоваться.

Но есть один нюанс.
Этот сайт настолько сильно тупил (загрузка любой страницы была на столько долгой что я успевал почитать новости в инете), что хостинг Beget ввёл против него санкции — нагрузка была просто конская. WordPress еле ворочался, страницы открывались по несколько секунд, админка лагала.
Именно про то, как я расшевелил этого мамонта, и будет эта серия статей.
Что я сделал и какой план работы:
- На сайте я удалил все миниатюры к статьям. Сейчас развелось огромное количество «правообладателей», которые раскидывают свои фото по интернету, а потом рассылают досудебки с требованием заплатить за картинку 50–100 тысяч. В итоге сайт остался вообще без изображений (кстати, вы это и сейчас увидите).
- На сайте больше 58 тысяч новостных материалов — вот данные на 2 января из Вебмастера. Тут есть два пути: либо удалять всё и оставлять только свежак, либо убирать старьё из индекса. Дальше расскажу, что именно я делал и почему.

- Почему так медленно работает сайт? В этой статье я расскажу, как нашёл причину тормозов и медленной загрузки сайта на WordPress.
- На сайте всё было очень криво и недружелюбно. Хотелось, чтобы статьи и новости выглядели нормально и читались без боли.
- Нужно было выяснить реальную причину медленной загрузки сайта — дальше я покажу инструменты для замера скорости и расскажу, как ими пользоваться.
Это будет настоящее настольное пособие для новичков и профи, которые хотят понять, почему сайт тормозит и что создаёт нагрузку.
Если появятся вопросы — пишите в комментариях к статье или заходите в мою TG-группу https://t.me/NibblitClub, где мы с моим сообществом будем помогать разбирать ваши ситуации.
мой сайт настолько сильно тупил, что хостинг Beget ввёл против него санкции и вот тут начинается классическая история любого веб мастера что делать:?
Когда сайт медленно работает, почти все делают одно и то же:
- бегут в гугл с запросом «почему сайт тормозит»
- читают статьи «как ускорить сайт за 5 минут»
- ставят плагины кеша
- гоняют сайт через PageSpeed
- оптимизируют картинки
- подключают CDN (но это прям богатые админы) )
то все эти «оптимизации» — это просто стрельба по воробьям, давайте один раз напишем статью и разберем ее по-человечески:
- что вообще значит «медленный сайт»
- как замерять реальную скорость загрузки сайта
- как понять, что именно грузит сайт
- как найти причину тормозов
И главная мысль, которую стоит зафиксировать сразу:
любые попытки ускорить сайт — это просто пустая трата времени и сил!
Дальше я покажу, как пошагово разобраться, почему сайт тормозит,
Как узнать что грузит сайт запросы в БД или код сайта с плагинами?

Самый быстрый способ выяснить что тормозит сервер или WordPress
перед тем как начать давайте сделаем быстрый тест который нам покажет проблема все таки на сервере (хостинге) или с CMS WordPress (ну или какая там у вас)
Открой URL вашего сайта например с фавиконом:
Если:
• ⚡ страница открывается мгновенно → с сервер все ОК, проблема в WP
• 🐢 грузится долго → проблема на уровне сервера (идите мучить ТП вашего хостинга)
В моем случает страница загрузилась очень быстро, значит хостинг исключили и мы идем пилить наш WordPress и искать причину очень медленной загрузки страниц
Перед тем как начать разбор, нам нужно настроить инструменты для анализа сайта и пошагового выявления причин его тормозов, чтобы потом можно было их устранять:
- Как проверить реальную скорость загрузки сайта?
- Как узнать, сколько запросов отправляется в базу данных при открытии страницы?
- Как вывести все SQL-запросы к базе при генерации страницы?
- Как определить, какой плагин или компонент замедляет работу сайта?
Как узнать скорость загрузки сайта и количество запросов в базу данных
Конечно, можно поставить десятки плагинов для анализа скорости сайта, SQL-запросов и нагрузок на WordPress. Но я не люблю всё это, потому что плагины только тормозят сайт ещё сильнее, а настоящую проблему они не показывают. Поэтому будем разбираться только через код — это быстрее, надёжнее и показывает реальную картину того, почему сайт медленно работает.
Вставь временно в wp-config.php:
define('SAVEQUERIES', true);
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
И в functions.php в самый низ:
add_action('wp_footer', function () {
global $wpdb;
echo '<!-- TIME: ' . timer_stop() . ' -->';
echo '<!-- QUERIES: ' . count($wpdb->queries) . ' -->';
});
Теперь обновляем любую страницу сайта и открываем исходный код страницы (Ctrl+U). Через поиск находим кусок кода QUERIES: – должно выглядеть примерно так:
<!-- TIME: 5,957 -->
<!-- QUERIES: 5988 -->
В моём случае сайт загружался почти 6 секунд, а количество SQL-запросов к базе данных достигало около 6000! Представляете, как хостинг терпел такой кошмар?
Для понимания: в среднем до 200 запросов к базе — это нормально для WordPress, а тут их было в 30 раз больше!
Эти первые данные уже дают нам ясную картину производительности сайта, показывают реальное время генерации страниц и количество запросов к базе данных.
Теперь, когда мы знаем, как измерить скорость загрузки сайта и количество SQL-запросов, можно переходить к следующему шагу — разбору того, что именно сайт пытается запросить из базы на этих 6000 запросов и как это исправить, чтобы ускорить сайт и уменьшить нагрузку на сервер.
Как узнать какие запросы отправляет сайт в базу данных при обновлении страницы?

Теперь, когда у нас есть первые исходные данные — время загрузки страниц и количество SQL-запросов, — пора получить вторую часть информации.
Нам нужно понять, какие именно запросы отправляет WordPress в базу данных, почему их так много и где создаётся нагрузка на сервер.
Для этого временно вставляем в functions.php следующий код:
add_action('shutdown', function () {
global $wpdb;
foreach ($wpdb->queries as $q) {
if ($q[1] > 0.05) {
error_log('SLOW QUERY (' . $q[1] . 's): ' . $q[0]);
}
}
});
После этого обновляем любую страницу сайта.
Все медленные запросы будут записаны в файл:
Ваш_сайт/wp-content/debug.log
То есть этот простой трюк создаёт лог-файл debug.log прямо в директории wp-content, куда WordPress автоматически пишет все SQL-запросы, которые занимают больше 0.05 секунды.
Открывая лог, мы видим:
- какие запросы повторяются
- из каких файлов они вызываются
- какие плагины или шаблоны замедляют сайт
У меня лично таких медленных запросов было тысячи — это и есть причина, почему сайт грузился 6 секунд и создавал колоссальную нагрузку на сервер.
Теперь у нас есть полная картина того, что делает WordPress при генерации страницы, какие SQL-запросы реально тормозят сайт и где искать узкие места.
На основе этих логов мы сможем определить проблемные плагины, шаблоны и циклы, которые вызывают тысячи лишних запросов к базе данных, и дальше — пошагово оптимизировать сайт, чтобы ускорить генерацию страниц и снизить нагрузку на сервер.
Мой лог файл (разверните чтобы посмотреть)
02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00013s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00022s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00013s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00016s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00011s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00015s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00034s | SELECT * FROM wp_posts WHERE ID = 404454 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 404454 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00085s | SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC [02-Jan-2026 08:35:54 UTC] [SQL] 0.00031s | SELECT * FROM wp_users WHERE ID IN (1) [02-Jan-2026 08:35:54 UTC] [SQL] 0.00089s | SELECT t.term_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN (‘category’) AND tt.parent = ‘0’ ORDER BY t.name ASC [02-Jan-2026 08:35:54 UTC] [SQL] 0.00042s | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (558152) ORDER BY meta_id ASC [02-Jan-2026 08:35:54 UTC] [SQL] 0.00422s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND wp_posts.ID NOT IN (404455) AND ( wp_term_relationships.term_taxonomy_id IN (137) ) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’)) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 5 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0001s | SELECT FOUND_ROWS() [02-Jan-2026 08:35:54 UTC] [SQL] 0.00028s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0002s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00031s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557706 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0003s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00031s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00022s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00028s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00015s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] PHP Deprecated: Automatic conversion of false to array is deprecated in /home/m/mamama1w/rus-bel.online/public_html/wp-content/plugins/td-composer/legacy/common/wp_booster/td_module.php on line 380 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00013s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00023s | SELECT option_value FROM wp_options WHERE option_name = ‘saswp_collection_display_opt’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00039s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00022s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00023s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0002s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00024s | SELECT * FROM wp_comments WHERE comment_ID = 1 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00021s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00018s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_users WHERE user_email = ‘#’ LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00021s | SELECT * FROM wp_comments WHERE comment_ID = 2 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00051s | SELECT SQL_CALC_FOUND_ROWS wp_comments.comment_ID FROM wp_comments WHERE ( comment_approved = ‘1’ ) AND comment_post_ID = 404455 AND comment_type NOT IN (‘note’) AND comment_parent = 0 ORDER BY wp_comments.comment_date_gmt ASC, wp_comments.comment_ID ASC [02-Jan-2026 08:35:54 UTC] [SQL] 0.0669s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.ID NOT IN (404455) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’)) ORDER BY wp_posts.post_date DESC LIMIT 0, 1 [02-Jan-2026 08:35:54 UTC] [SQL] 9.0E-5s | SELECT FOUND_ROWS() [02-Jan-2026 08:35:54 UTC] [SQL] 0.06598s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.ID NOT IN (404455) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’)) ORDER BY wp_posts.post_date DESC LIMIT 1, 4 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00012s | SELECT FOUND_ROWS() [02-Jan-2026 08:35:54 UTC] [SQL] 0.00031s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0002s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00018s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00016s | SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00027s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00021s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00033s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00021s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557692 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.0003s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00027s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00019s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00018s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1 [02-Jan-2026 08:35:54 UTC] [SQL] 0.00017s | SELECT * FROM wp_posts WHERE ID = 557684 LIMIT 1
🔥 Разбираем лог файл и ищем причину тормозов
Сайт тормозит НЕ из-за медленных запросов, а из-за ИХ КОЛИЧЕСТВА И ПОВТОРЕНИЙ.
❌ N+1 queries + повторные SELECT по одному и тому же post_id
❌ td-composer дергает get_post() и get_post_meta() десятки раз
❌ нет нормального object cache
❌ отсутствующие/битые данные (миниатюры) усугубляют ситуацию
1️⃣ Проблема – ПОВТОРЫ
Смотрим внимательно:
SELECT * FROM wp_posts WHERE ID = 557699 LIMIT 1
это повторяется 6–7 раз подряд
То же самое для:
557692557684557706
📌 Это ОДИН И ТОТ ЖЕ ПОСТ, но:
- каждый модуль темы
- каждый блок
- каждый вызов td_module
делает НОВЫЙ SQL, вместо использования кеша.
👉 Это 100% проблема темы / билдера темы шаблона (в моем шаблоне используется tagDiv Opt-In Builder ), не БД.
2️⃣ проблема – ЭТО НЕ «МЕДЛЕННЫЕ» ЗАПРОСЫ, А ИХ МАССА
Отдельный запрос:
0.00012s
— это очень быстро.
Но когда их:
- 2000
- 4000
- 6000
👉 суммарно это секунды CPU + PHP, даже если MySQL быстрый.
3️⃣ проблема – SQL_CALC_FOUND_ROWS (ВТОРОЙ КЛЮЧЕВОЙ ВРАГ)
Примеры из лога:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
ORDER BY wp_posts.post_date DESC
LIMIT 0, 1
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
ORDER BY wp_posts.post_date DESC
LIMIT 1, 4
📌 SQL_CALC_FOUND_ROWS:
- официально признан медленным
- deprecated в MySQL 8
- WordPress до сих пор его использует
- tagDiv злоупотребляет
👉 На большом количестве записей это “ад” для хостинга.
4️⃣ проблема – wp_postmeta и миниатюры (отсутствие миниатюр)
👉 как я писал выше, что на сайте удалил все картинки и это реально ломает логику темы шаблона из-за этого много мусорных запросов (уже разработчикам шаблона написал чтобы подправили этот баг в след обновлениях шаблона)
Есть запрос:
SELECT post_id, meta_key, meta_value
FROM wp_postmeta
WHERE post_id IN (558152)
И одновременно:
PHP Deprecated: Automatic conversion of false to array
td_module.php on line 380
📌 Это означает:
- td-composer ожидает массив meta
- получает
false(нет миниатюры / данных) - дальше пытается работать как с массивом
- PHP ругается
- код идёт дальше и делает новые запросы
5️⃣ проблема – ЛИШНИЕ ЗАПРОСЫ К wp_users И wp_comments
Примеры:
SELECT * FROM wp_users WHERE user_email = '#'
SELECT * FROM wp_comments WHERE comment_ID = 1
📌 Это:
- либо комментарий-модуль
- либо SEO-плагин
- либо theme helper
Но они вторичны (хотя по новым законам и правилам РКН о персональных данных вообще отключил комментарии), но основная нагрузка как мы понимаем все равно не тут.
🎯 РЕАЛЬНЫЕ ПРИЧИНЫ ТОРМОЗОВ (итог)
- ❌ НЕ сервер
- ❌ НЕ MySQL
- ❌ НЕ PHP версия
- ❌ НЕ количество статей напрямую
- ✅ td-composer + повторные запросы + отсутствие кеша + отсутствие миниатюр
Как на wordpress удалить и заменить все миниатюры
Самое первое что сделаем это исправим проблему с наличием миниатюр на сайте
тут можно решить вопрос быстро и просто (как я люблю)
для этого надо нужно:
- картинка заглушка для всех картинок – скачать я взял картинку формата webp в 5кб она как раз не грузит сильно сервер и смотрится оригинально
- доступ к phpmyadmin для запуска скрипта
Загружаем заглушку на сайт
нам нужно загрузить нашу заглушку на сайт , далее открываем ее и наводим кнопку мыши на пункт – Изменить другие детали и увидите ссылку на картинку с нужным нам id

Запускаем скрипт по замене всех миниатюр WordPress
Теперь когда мы знает id нашей картинки (в моем случае это 558166) меняем в скрипте
UPDATE wp_postmeta pm
LEFT JOIN wp_posts p ON pm.meta_value = p.ID
SET pm.meta_value = 11111111
WHERE pm.meta_key = '_thumbnail_id'
AND p.ID IS NULL;
после запуска обновляем страницу и смотрим количество запросов
🎯 Отчет по скорости
на удивление после таких манипуляций запросов уменьшилось на процентов 30%
<!-- TIME: 4,493 -->
<!-- QUERIES: 4288 -->
но все равно очень много!
Как уменьшить количество запросов в базу данных
т.к. мы уже знаешь что причина в том, что идет огромное количество запросов но и вывод логов у нас изменился давайте смотреть
Логи запросов к базе данных
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00044s | SELECT t., tt. FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id IN (716,590,1610,611,140,344,918,383,5,1484,2218,1990,1839)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00031s | SELECT t.term_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy IN (‘category’) AND t.term_id IN ( 846 )
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00842s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
WHERE 1=1 AND (
wp_term_relationships.term_taxonomy_id IN (846)
) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 5
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00023s | SELECT wp_posts.* FROM wp_posts WHERE ID IN (556860,553532,553433,552167,552099)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00042s | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (556860,553532,553433,552167,552099) ORDER BY meta_id ASC
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00056s | SELECT DISTINCT t.term_id, tr.object_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN (‘category’, ‘post_tag’, ‘post_format’) AND tr.object_id IN (556860, 553532, 553433, 552167, 552099)
ORDER BY t.name ASC
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00035s | SELECT t., tt. FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id IN (144,69,768,534,1160,220,931,436,606,1802,837,459)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00023s | SELECT t.term_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy IN (‘category’) AND t.term_id IN ( 173 )
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00502s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
WHERE 1=1 AND (
wp_term_relationships.term_taxonomy_id IN (173)
) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 5
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00027s | SELECT wp_posts.* FROM wp_posts WHERE ID IN (553840,553413,553334,552703,552511)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00043s | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (553840,553413,553334,552703,552511) ORDER BY meta_id ASC
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00047s | SELECT DISTINCT t.term_id, tr.object_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN (‘category’, ‘post_tag’, ‘post_format’) AND tr.object_id IN (553840, 553413, 553334, 552703, 552511)
ORDER BY t.name ASC
[02-Jan-2026 09:32:41 UTC] [SQL] 0.0003s | SELECT t., tt. FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id IN (1541,682,2203,2223,1828,1115)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00024s | SELECT t.term_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
WHERE tt.taxonomy IN (‘category’) AND t.term_id IN ( 124 )
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00255s | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
WHERE 1=1 AND (
wp_term_relationships.term_taxonomy_id IN (124)
) AND wp_posts.post_type = ‘post’ AND ((wp_posts.post_status = ‘publish’))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 5
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00023s | SELECT wp_posts.* FROM wp_posts WHERE ID IN (556954,552520,550588,533655,516823)
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00042s | SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (556954,552520,550588,533655,516823) ORDER BY meta_id ASC
[02-Jan-2026 09:32:41 UTC] [SQL] 0.00066s | SELECT DISTINCT t.term_id, tr.object_id
FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN (‘category’, ‘post_tag’, ‘post_format’) AND tr.object_id IN (556954, 552520, 550588, 533655, 516823)
ORDER BY t.name ASC
теперь четко видно, что на сайте огромное количество мест где, что то вызывает запрос к статьям.
не буду ходить вокруг да около , в шаблоне в меню была включена функция Мега меню и каждое меню при обновлении страницы запрашивало из БД страницы и это сильно грузило сайт

в итоге после отключения сия “чуда” на сайте стала такая ситуация
🎯 Отчет по скорости после оптимизации Мегаменю
<!-- TIME: 1,433 -->
<!-- QUERIES: 124 -->
Вы это и сами сейчас можете посмотреть на сайт, ссылка выше.
Отсюда я делаю вывод , мы побелили на сайте огромную нагрузку на хостинг, наш сайт снова грузится очень быстро, а это значит что ожидаем через некоторое время положительные сдвиги в области выдачи сайта в топе яндекса как это было ранее.










