这是一个简单的问题-我刚刚找到了不同的答案,所以我不确定。让我描述一下:
如果您有这样的查询,]:>
SELECT logins.timestamp, users.name FROM logins LEFT JOIN users ON users.id = logins.user_id LIMIT 10
这基本上将列出
logins
表的最后10个条目,并通过JOIN将user_id
替换为username
。
现在,我的问题是,LIMIT是否在JOIN发生时生效(以便仅连接前10个条目)或在JOIN之后生效? (它将连接整个表,然后剪切出前10个条目)。
我问这个问题是因为示例表logins
将有很多条目-而且我不确定JOIN是否在性能上过于昂贵。如果LIMIT仅会发生10个JOIN的情况,那将不是问题。
随之而来的第二个问题:如果添加了DISTINCT,功能是否相同?它还会在10个条目时停止吗?不,这不会由ORDER BY订购。
这是一个简单的问题-我刚刚找到了不同的答案,所以我不确定。让我描述一下:如果您有这样的查询,请执行以下操作:SELECT logins.timestamp,users.name FROM登录名LEFT JOIN用户...
不用担心。 LIMIT将与连接同时发生:MySQL不会读取整个登录表,而是逐行读取(每次在用户上连接),直到找到10行为止。