我有posts
,votes
和comments
表。每個帖子可以有N個「是的投票」,N「沒有投票」和N個評論。我試圖獲得按贊成票數排序的一組帖子。SQL加入,計數()和按「是」/「否」投票排序'帖子'
我有一個查詢完成此操作,但運行速度太慢。在1500個帖子和15K票的數據集上,我的開發機器花費了0.48秒。我怎樣才能優化這個?
select
p.*,
v.yes,
x.no
from
posts p
left join (select post_id, vote_type_id, count(1) as yes from votes where (vote_type_id = 1) group by post_id) v on v.post_id = p.id
left join (select post_id, vote_type_id, count(1) as no from votes where (vote_type_id = 2) group by post_id) x on x.post_id = p.id
left join (select post_id, count(1) as comment_count from comments group by post_id) p on p.confession_id = p.id
order by
yes desc
limit
0, 10
編輯:
Votes
Comments
和既具有post_id
FK- 在剃光.1sec關閉查詢執行的
votes
表上vote_type_id
post_id
和添加一個索引。
你在每個表上定義了哪些鍵/索引? – Amber 2009-11-18 20:44:38