如果我GROUP BY
使用唯一键并将LIMIT
子句应用于查询,是否会在应用限制之前计算所有组?
如果我在表中有一百条记录(每条记录都有一个唯一的键),在应用 a 之前我会100
在临时表中创建(用于GROUP BY
)记录LIMIT
吗?
一个案例研究为什么我需要这个:
举个Stack Overflow
例子。
您运行的每个查询都会显示问题列表,还会显示提出此问题的用户以及他拥有的徽章数量。
因此,虽然用户<->问题是一对一的,但用户<->徽章是一对一的。
在一个查询中执行此操作(而不是一个查询问题,另一个查询用户然后组合结果)的唯一方法是通过主键 (question_id) 和 join+group_concat 将查询分组到 user_badges 表。
问题TAGS也是如此。
Code example:
Table Questions:
question_id (int)(pk)| question_body(varchar)
Table tag-question:
question-id (int) | tag_id (int)
SELECT:
SELECT quesuestions.question_id,
questions.question_body,
GROUP-CONCAT(tag_id,' ') AS 'tags-ids'
FROM
questions
JOIN
tag_question
ON
questions.question_id=tag-question.question-id
GROUP BY
questions.question-id
LIMIT 15