【发布时间】:2012-07-07 23:17:56
【问题描述】:
我有一个包含以下字段的表格“内容”:
id (an unique, increasing identifier)
user_id
content1
content2
content3
...
该表可以包含来自相同或不同user_id 的数据。我正在尝试选择按content 字段之一排序的数据。但是,我只想从不同的“user_id”中选择数据并始终获取用户的最新条目(因此最高 id 值)。我不能简单地group by user_id,因为分组发生在排序之前。
这就是我现在正在做的事情:
SELECT *
FROM `content`
WHERE `content`.`id` = (
SELECT `id`
FROM `content` as `alt`
WHERE `alt`.`user_id` = `content`.`id`
ORDER BY `id` DESC
LIMIT 1 )
ORDER BY content1 DESC
它可以工作,但是一旦表变大,性能就会变得太慢。 有人可以给我一个建议如何改进这个查询吗?
【问题讨论】:
-
表上的索引是什么?
-
这在mysql手册中有解释:dev.mysql.com/doc/refman/5.5/en/…
标签: php mysql performance sorting group-by