Оптимизация запросов - типичная для сценария - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть запрос, который занимает 11 секунд, чтобы получить запись, потому что база данных огромна, как 150 МБ. ( EDITED : Извините, это не так уж и много, люди позволили мне понять меня: D)

Как оптимизировать этот запрос?

select id, post_title,featured, location, application_deadline, post_name, post_content, post_date as d, logo FROM wp_posts
  LEFT JOIN wp_term_relationships ON wp_posts.id = wp_term_relationships.object_id
  LEFT JOIN wp_term_taxonomy ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
  LEFT JOIN wp_terms ON wp_term_taxonomy.term_id = wp_terms.term_id
  WHERE wp_posts.post_status='publish' 
        AND wp_posts.post_type='post' 
        AND wp_term_taxonomy.taxonomy = 'category'
        AND wp_terms.post_type='news' 
        order by post_date desc limit 0, 9

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Прежде всего 150 мб это не огромно. Я бы порекомендовал использовать планы выполнения в SSMS, чтобы определить, где выполняется запрос.

enter image description here

Вы можете использовать Предполагаемый и фактический планы.

Вот хорошая статья, если вы ничего не знаете о планах выполнения:

https://www.red -gate.com / простой разговор / SQL / производительность / выполнение-план-основа /

0 голосов
/ 07 сентября 2018

Я решил проблему.

  1. Преобразовал все таблицы в INNODB
  2. При необходимости добавлен первичный ключ
  3. Индексированные реляционные столбцы Время уменьшено с 11 до 0,3 сек.
...