我有一个像这样的 SQL 查询,它需要大量的加载......
不确定这里发生了什么......如果有人可以帮助我。
SELECT `posts`.* FROM `posts`
WHERE `posts`.`type`
IN ('MySubDomainSitePost')
AND `posts`.`aasm_state` = 'published'
AND (published_at <= '2015-05-12 01:01:01')
AND `posts`.`on_frontpage` = 1
AND `posts`.`is_pinned` = 0
ORDER BY published_at DESC LIMIT 16
最佳答案
您需要使用explain select
检查查询性能。现在对于大型数据集,如果列没有索引,查询将执行得非常差。
根据给定的查询,您可能需要添加以下索引
alter table posts
add index p_search_idx(type,aasm_state,published_at,on_frontpage,is_pinned);
这将提高查询速度。
确保在应用索引之前对表进行备份。
并且无需在查询中使用 IN
就可以了
SELECT `posts`.* FROM `posts`
WHERE `posts`.`type` = 'MySubDomainSitePost'
AND `posts`.`aasm_state` = 'published'
AND (published_at <= '2015-05-12 01:01:01')
AND `posts`.`on_frontpage` = 1
AND `posts`.`is_pinned` = 0
ORDER BY published_at DESC LIMIT 16
关于mysql - 不确定发生了什么的繁重查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207813/