【发布时间】:2013-03-19 17:06:40
【问题描述】:
我有两张桌子:posts 和 categories。
posts table 大约有 360,000 lines。
我只想显示每个类别的第一篇文章,按日期排序并使用分页。
查询:
SELECT * FROM
(SELECT * FROM posts ORDER BY date_post DESC) as temp
GROUP BY id_category ORDER BY date_post DESC
LIMIT $offset, $limit"
该查询大约需要 1 分钟才能加载并显示我的网站。
我尝试将 MyISAM 更改为 InnoDB 并使用分区但未成功。
网站托管的服务器是专用服务器,我认为问题不在于它。
有人有什么建议吗?
【问题讨论】:
-
如果没有太多的类别,也许每个类别都写一个查询比较好?
-
您的查询中没有聚合函数,因此 GROUP BY 在这种情况下是多余的。也许您的意思是 DISTINCT?
-
就目前而言,为什么不直接使用 SELECT * FROM 帖子作为临时文件,而不是放入第二个 SELECT 呢?
-
我已经尝试过 DISTINCT,但我需要回显超过 1 列。使用 DISTINCT 我无法显示我想要显示的所有列
-
您确定数据库是瓶颈吗?意思是,通过更简单的查询,页面是否按预期加载?