【发布时间】:2015-05-13 07:02:06
【问题描述】:
我有一个这样的 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
【问题讨论】:
-
查询本身非常简单 - 因此,很可能该表真的很大,而且您没有任何索引。
-
是的!该表非常大,除了我的帖子表中的
on_frontpage和is_pinned,我的其他属性都有索引。那么在我查询的“所有”属性上设置索引是一个更好的解决方案? -
首先,将您的
in更改为=,因为您只检查一个值。其次,确保您有一个覆盖(type, aasm_state, published_at, on_frontpage,is_pinned)的复合索引。这应该会有所帮助
标签: mysql sql ruby-on-rails database