查询优化-典型场景

j1dl9f46  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(304)

我有一个查询,它需要11秒来获取记录,因为数据库很大,大约有150mb(编辑:抱歉这不是很大,人们让我意识到我: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
sqxo8psd

sqxo8psd1#

我解决了这个问题。
已将所有表转换为innodb
在需要时添加主键
索引关系列的时间从11秒减少到0.3秒。

jgovgodb

jgovgodb2#

首先,150MB不是很大。我建议使用ssms中的执行计划来确定查询正在执行的位置。

你可以使用估计和实际的计划。
如果你对执行计划一无所知,这里有一篇好文章:
https://www.red-gate.com/simple-talk/sql/performance/execution-plan-basics/

相关问题