【发布时间】:2014-11-12 14:50:01
【问题描述】:
我有一个包含 1 000 000 条记录的表。 (t1)
有“选择查询”,速度非常快,并返回一个 ID 的单列结果。 (结果我只有唯一的 ID。例如:1,2,5,10,.. (没有重复值))
解释选择只显示我输入index 和ref(完美查询:))
但我需要通过这种方式从记录中过滤此结果:
与其他 1 000 000 个表的内部联接 (t2)
ON (`t1`.`some_column_id` = `t2`.`ref_id` AND `t1`.`user_id` = 4)
它显示了t1.some_column_id = t2.ref_id 的所有匹配项
即使我使用
GROUP BY `t1`.`some_column_id` AND/OR LIMIT of 30 ROWS
mysql 服务器失败
您将如何限制此 INNER JOIN 仅使用第一个匹配项?
【问题讨论】:
-
请您指定您的 RDMS。另外,问题不太清楚,能否请您显示一个完整的查询?
-
@NBR 看看标签就知道了。
-
“第一场比赛”是什么意思?顺序是什么?
-
使用
SELECT [..] FROM t2 JOIN [subquery],子查询从t1中只选择一行我认为应该很快。 -
我考虑了一下,但是如果子查询返回 0..5000 条记录,这个查询的运行速度有多快?
标签: mysql sql performance join greatest-n-per-group