【发布时间】:2023-03-29 02:18:01
【问题描述】:
我有这个 sql 查询。我现在返回的是什么,但无法理解服务器如何解析并逐步执行它。 我想深入了解工作原理,运行sql命令时服务器发生了什么,在返回结果之前它如何在每一行中迭代。
我有users 和friends 表,最后一张有friend_id 和user_id 组合,它们都是用户的ID。
select u.id,f.user_id, f.friend_id from friends f
INNER JOIN users u on (u.id = f.friend_id or u.id = f.user_id)
where f.user_id = 72 or f.friend_id = 72
- 如何向我解释此查询的每个步骤中发生了什么?
- 它在每个步骤中的表现如何?
-
OR运算符在此处的每个步骤中的行为如何? - 是否在每个步骤中检查
OR运算符的两个语句或 查询,或例如在第一次迭代中加入friend_id,然后加入 用户 ID。
【问题讨论】:
-
删除不正确的标签是值得的。这是 MySQL 还是 SQL Server?
-
MySQL是否有类似SQL Server的执行计划?
-
我用过EXPLAIN命令,但不是我要的,我需要了解select查询的工作原理。它是如何工作的,或者编译。
-
值得用谷歌搜索 mysql 的执行顺序。你可能会发现类似stackoverflow.com/questions/24127932/…
-
我想我用错了标题,我不需要查询语句顺序。我想深入了解工作原理,当你运行 sql 命令时服务器发生了什么,它如何在每一行中迭代。