我的程式中有這個查詢,當我使用查詢中的 select count(*) 欄位進行排序時,我不知道為什么,運行該查詢時速度很慢。
問題是當我從posts_count.
這是查詢:
select 'tags'.*, (select count(*) from 'posts' inner join 'post_tag' on 'posts'.'id' = 'post_tag'.'post_id' where 'tags'.'id' = 'post_tag'.'tag_id') as 'posts_count' from 'tags' order by 'posts_count' asc limit 15 offset 0;
這是執行時間:

請有人幫我改進這個查詢,謝謝。
我期望的是查詢可以運行得更快。
uj5u.com熱心網友回復:
SELECT t.*, COUNT(*) AS count
FROM tags AS t
LEFT OUTER JOIN post_tag AS pt ON t.id = pt.tag_id
GROUP BY t.id
ORDER BY count ASC LIMIT 15 OFFSET 0;
您應該確保有一個以該列post_tag開頭的索引。tag_id你沒有在你的問題中包含你的表定義,所以我必須假設索引在那里。如果主鍵以 開頭tag_id,那也沒關系。
你不需要加入posts,如果我可以假設一行存在于post_tag意味著它必須參考一個現有的行posts。只有加入 才能獲得所需的資訊post_tag。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/456731.html
