gpt4 book ai didi

mysql - LIMIT 是在 JOIN 之前还是之后生效?

转载 作者:可可西里 更新时间:2023-11-01 07:04:38 26 4
gpt4 key购买 nike

这是一个简单的问题 - 我只是找到了不同的答案,所以我不确定。让我描述一下:

如果您有这样的查询:

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 进行排序。

最佳答案

别担心。 LIMIT 将与连接同时发生:MySQL 不会读取整个登录表,而是逐行获取(每次连接用户)直到找到 10 行。

请注意,如果 users.id 在表中出现两次,则 JOIN 将复制登录行并添加每个用户行。总行数仍为 10,但您将有 9 次登录。

关于mysql - LIMIT 是在 JOIN 之前还是之后生效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com