Как бы я оптимизировал этот запрос WordPress? - PullRequest
0 голосов
/ 03 января 2011

Я пытаюсь определить оптимальную комбинацию индексов для запроса ниже. Прямо сейчас его использование временное; Использование сортировки файлов и убийство моего VPS. Запросы занимают от 6-10 секунд.

SELECT SQL_CALC_FOUND_ROWS 
  wp_posts.ID     
FROM 
  wp_posts
  INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
  INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
  INNER JOIN wp_terms ON (wp_term_taxonomy.term_id = wp_terms.term_id) 
WHERE
  1=1
  AND wp_term_taxonomy.taxonomy = 'post_tag' 
  AND wp_terms.slug IN ('pie') 
  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, 20

Есть предложения?

1 Ответ

1 голос
/ 03 января 2011

Как это сравнивать с точки зрения производительности?

SELECT
  p.ID
FROM 
  wp_posts AS p
WHERE
  1=1
  AND p.post_type = 'post'
  AND p.post_status = 'publish'
  AND EXISTS (
    SELECT 1 
      FROM wp_term_relationships AS r 
           INNER JOIN wp_term_taxonomy AS t ON 
             r.term_taxonomy_id = t.term_taxonomy_id AND t.taxonomy = 'post_tag'
           INNER JOIN wp_terms AS m ON 
             m.term_id = t.term_id AND m.slug IN ('pie') 
     WHERE r.object_id = wp_posts.ID 
  )
ORDER BY 
  p.post_date DESC 
LIMIT 0, 20

Индексы должны быть для всех первичных и внешних ключей, для wp_terms.slug, для wp_term_taxonomy.taxonomy и для составного над wp_posts.post_status, post_type, post_date.

...