Сайт с двумя миллионами записей, и запрос
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
WHERE 1=1
AND ( wp_posts.ID NOT IN (
SELECT object_id
FROM wp_term_relationships
WHERE term_taxonomy_id IN (34,171) ) )
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'private')
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 40
, который выполняет обычный цикл на главной
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
выполняется почти 8 секунд
Насколько я понимаю, все дело в SQL_CALC_FOUND_ROWS? Как его можно убрать? Или для постраничной этот параметр обязателен? Может его можно вынести в простой запрос
SELECT COUNT(*) FROM wp_posts
WHERE 1=1
AND ( wp_posts.ID NOT IN (
SELECT object_id
FROM wp_term_relationships
WHERE term_taxonomy_id IN (34,171) ) )
AND wp_posts.post_type = 'post'
AND (wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'private')
?