Индексы в WordPress часто тормозят не запрос, а лишняя спешка с их добавлением
В `wp_posts`, `wp_postmeta` и `wp_options` индексы нужны не «на всякий случай», а под конкретный фильтр, сортировку или JOIN. Если поле редко участвует в `WHERE`, индекс на него обычно только раздувает таблицу и замедляет запись. Сначала смотрят на реальные запросы, потом уже на схему.
Практика простая:
• индексируют колонки из `WHERE`, `JOIN`, `ORDER BY`
• составные индексы строят в порядке наиболее селективных условий
• не дублируют уже покрываемые индексы
• проверяют, не ломает ли индекс `LIKE '%...%'` и функции над полем
Частая ошибка в WordPress — пытаться ускорить `meta_query` одним индексом на `meta_key`. Для `wp_postmeta` это полезно только в части кейсов. Если фильтр идет по `meta_key` и `post_id`, нужен индекс, который помогает именно связке, а не абстрактному поиску по одному столбцу. Иначе MySQL все равно упрется в чтение лишних строк.
Перед добавлением индекса всегда смотри `EXPLAIN`: если запрос уже берет нужный индекс, новый не даст выигрыша. Если видишь `type=ALL`, `rows` большой, а фильтр узкий — это кандидат на доработку схемы. После изменения индексов обязательно проверь не только чтение, но и вставки: лишний индекс делает запись тяжелее.
Хороший индекс экономит миллисекунды на каждом запросе. Плохой — тихо ест ресурсы каждый день.
Работа с БД WordPress
@wp_database_mastery_ww
Индексы в WordPress часто тормозят не запрос, а лишняя спешка с их добавлением
Этот пост опубликован в Telegram-канале Работа с БД WordPress. Подписаться можно по ссылке: @wp_database_mastery_ww.