提问人:jwa 提问时间:11/14/2023 最后编辑:jwa 更新时间:11/15/2023 访问量:168
物理处理与逻辑处理 - 当涉及索引时,逻辑查询处理是否会更改?
Physical processing vs logical processing - Does the logical query processing change when indexes are involved?
问:
我推荐这本书。
这本书很好地解释了 sql 查询的行为,但我的疑问是,
- 当有索引时,如何处理 sql 查询,也就是说,这种行为会改变吗?
- 这在 SQL Server 中解释了它,但我很确定它在 MySQL 中也适用,对吗?
我不敢解释它,当有索引时,这会改变,所以我想确保当涉及索引时,这不会改变。
答:
-4赞
Alex
11/14/2023
#1
这里有两个主要概念:查询的键入顺序和逻辑查询处理顺序。
我不会列出所有现有的查询关键字,但要点如下:
键入顺序:
- 选择
- 从
- 哪里
- 分组依据
- 拥有
- 排序方式
逻辑处理顺序或阶段:
- 从
- 哪里
- 分组依据
- 拥有
- 选择
- 排序方式
简而言之,不,索引不会影响逻辑处理顺序。如果索引存在,则可以参与执行计划,但不会以任何方式中断或更改处理顺序。
评论
0赞
The Impaler
11/14/2023
键入的顺序是正确的,但逻辑处理顺序取决于查询的具体情况,并且可能无处不在。执行计划详细说明了最终实际发生的情况。
0赞
Charlieface
11/14/2023
@TheImpaler 这是什么意思?逻辑顺序不变,执行计划与物理顺序相关。
0赞
The Impaler
11/14/2023
@Charlieface 是的,这就是我所说的与执行计划相关的物理执行,与键入的序列相比,它可能遭受了广泛的重写,或者可能看起来颠倒/从里到外。
评论
APPLY
PIVOT
UNPIVOT
TOP
ORDER BY