谓词的求值顺序
就在本系列的第 3 部分之前,我们稍作停顿,讨论了 SQL 中的谓词,因为它们会导致与外部联接相关的错误。在本系列“常见的 SQL 查询错误”的最后一部分中,谓词将再次出现,因为我们将研究谓词的求值顺序如何导致看似结构良好的查询因错误而运行失败。
捣乱的子查询
在这个关于“常见的 SQL 查询错误”的系列中,我们已经看了几个 SQL 查询示例,这些查询在第一次检查时看起来非常可靠,但它们可能会导致错误的结果和/或性能降低。上周,我们学习了放置谓词的位置如何对查询执行产生负面影响,尤其是在外部联接中。今天将重点介绍子查询,以及当对任何基础表进行更改时它们如何破坏 SQL 语句。
外部联接(Outer Join)和笛卡尔积(Cartesian Product)
在这个关于“常见的 SQL 查询错误”的系列中,我们一直在探索看似直观的 SQL 查询构造方法如何导致反模式,从而导致错误结果和/或性能降低。上周,我们暂停了这个系列,讨论了 SQL 中的谓词。在本期文竟中,我们将学习它们的位置如何对查询执行产生负面影响,尤其是在外部联接中。
第 2 部分:非 SARGable 查询条件
像大多数编程人员一样,数据库开发人员或多或少倾向于编写直接翻译给定请求的代码。大多数编程语言(包括 SQL)被设计为更易于人们阅读,这也导致了一个问题。为什么会有问题?所有编程语言都能比其他语言更快地执行某些操作。在关系数据库中,查询优化器用于分析 SQL 查询并确定称为查询计划的有效执行机制。优化器能为每个查询生成一个或多个查询计划,每个查询计划代表运行查询的一种可能方式。然后选择并使用最有效的查询计划来运行查询。事实证明,模仿请求语言的 SQL 很少是最有效的方法。
在常见的 SQL 查询错误系列的这一部分中,我们将探讨一个编写不佳的 SQL 语句的示例,并以提高效率的方式重写它。
Navicat 文章
频道条目分享
文章归档
- 2025 (1)
- 2024 (1)
- 2023 (1)
- 2022 (1)
- 2021 (1)
- 2020 (1)
- 2019 (1)
- 2018 (1)
- 2017 (1)