我有一个查询,它需要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
2条答案
按热度按时间sqxo8psd1#
我解决了这个问题。
已将所有表转换为innodb
在需要时添加主键
索引关系列的时间从11秒减少到0.3秒。
jgovgodb2#
首先,150MB不是很大。我建议使用ssms中的执行计划来确定查询正在执行的位置。
你可以使用估计和实际的计划。
如果你对执行计划一无所知,这里有一篇好文章:
https://www.red-gate.com/simple-talk/sql/performance/execution-plan-basics/