此查詢的用途與搜索一樣。不幸的是,查詢當前運行時間從1.5秒到2秒,這是不可接受的。在查詢上運行EXPLAIN之後,我看到它使用「Using temporary; Using filesort」並且沒有索引。但是,我並不確定你可以在這個查詢上放置索引。加快跨兩個表的MYSQL INNER JOIN查詢
ORDER BY也減慢了很多查詢,但它是必要的。 有關如何改進此查詢的任何建議?
SELECT DISTINCT p.id, p.date,
(
SELECT COUNT(post_id) FROM post_tags WHERE post_id = pt.post_id
) as t_count
FROM post_tags pt
INNER JOIN posts p
ON (pt.post_id = p.id)
WHERE pt.t_id IN (7,456)
ORDER BY t_count, p.s_count DESC, p.id DESC
LIMIT 0, 50;
這裏是EXPAIN聲明:https://gist.github.com/e742982e435cf082c033
您可以發佈解釋以及全輸出。 –
使用count(pt.post_id)和GROUP BY p.id和p.date是否更有效?你可以爲初學者擺脫子查詢。 – dash
@AdrianCornish我在帖子和這裏添加了EXPLAIN語句:https://gist.github.com/e742982e435cf082c033。 – stwhite