使用`from A内部联接B ... LIMIT x,y`进行MySQL查询是否在将y行从表A中取出之前或之后进行联接? [英] Does a MySQL query with `from A inner join B ...LIMIT x,y` do the join before or after getting the y rows out of table A?
本文介绍了使用`from A内部联接B ... LIMIT x,y`进行MySQL查询是否在将y行从表A中取出之前或之后进行联接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
对于下面的以下命令
- MySQL在从中获取100行之前或之后执行联接吗 表A?
-
是否可以重写查询以获取行 在进行联接之前从表A中获取数据?
- Does MySQL do the joins before or after getting the 100 rows from the table A?
Is there a way to rewrite the query to get the rows from table A before the joins are made?
SELECT
A.START_TIME, A.F1, A.F2, B.STRING
FROM
A INNER JOIN B ON A.B_ID=B.ID
WHERE
A.START_TIME>= '2015-03-22 05:23:44'
LIMIT 0, 100;
推荐答案
- 否,在合并的数据集上的连接后后应用限制.
- 如果只想在联接之前对表A施加限制,则需要使用子查询:
- No, the limit is applied after the join on the combined dataset.
- If you want to apply the limit on table A only before the join, then you need to use a subquery:
SELECT
T.START_TIME, T.F1, T.F2, B.STRING
FROM
(select A.START_TIME, A.F1, A.F2 from A WHERE A.START_TIME>= '2015-03-22 05:23:44' limit 0, 100) T INNER JOIN B ON T.B_ID=B.ID;
SELECT
T.START_TIME, T.F1, T.F2, B.STRING
FROM
(select A.START_TIME, A.F1, A.F2 from A WHERE A.START_TIME>= '2015-03-22 05:23:44' limit 0, 100) T INNER JOIN B ON T.B_ID=B.ID;
这篇关于使用`from A内部联接B ... LIMIT x,y`进行MySQL查询是否在将y行从表A中取出之前或之后进行联接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文