使用`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?

查看:72
本文介绍了使用`from A内部联接B ... LIMIT x,y`进行MySQL查询是否在将y行从表A中取出之前或之后进行联接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于下面的以下命令

  1. MySQL在从中获取100行之前或之后执行联接吗 表A?
  2. 是否可以重写查询以获取行 在进行联接之前从表A中获取数据?

  1. Does MySQL do the joins before or after getting the 100 rows from the table A?
  2. 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;

推荐答案

  1. 否,在合并的数据集上的连接后应用限制.
  2. 如果只想在联接之前对表A施加限制,则需要使用子查询:
  1. No, the limit is applied after the join on the combined dataset.
  2. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆