Navicat 博客

一些最常见的 SQL 查询错误 - 第 4 部分 2022 年 5 月 11 日,由 Robert Gravelle 撰写

捣乱的子查询

在这个关于“常见的 SQL 查询错误”的系列中,我们已经看了几个 SQL 查询示例,这些查询在第一次检查时看起来非常可靠,但它们可能会导致错误的结果和/或性能降低。上周,我们学习了放置谓词的位置如何对查询执行产生负面影响,尤其是在外部联接中。今天将重点介绍子查询,以及当对任何基础表进行更改时它们如何破坏 SQL 语句。

一些最常见的 SQL 查询错误 - 第 3 部分 2022 年 5 月 6 日,由 Robert Gravelle 撰写

外部联接(Outer Join)和笛卡尔积(Cartesian Product)

在这个关于“常见的 SQL 查询错误”的系列中,我们一直在探索看似直观的 SQL 查询构造方法如何导致反模式,从而导致错误结果和/或性能降低。上周,我们暂停了这个系列,讨论了 SQL 中的谓词。在本期文竟中,我们将学习它们的位置如何对查询执行产生负面影响,尤其是在外部联接中。

SQL 中的谓词 2022 年 5 月 3 日,由 Robert Gravelle 撰写

本周,我们将暂停“一些常见的 SQL 查询错误”系列,转为探讨 SQL 中的谓词。原因是谓词将成为“常见的 SQL 查询错误”系列的第 3 部分。

一些最常见的 SQL 查询错误 - 第 2 部分 2022 年 4 月 26 日,由 Robert Gravelle 撰写

第 2 部分:非 SARGable 查询条件

像大多数编程人员一样,数据库开发人员或多或少倾向于编写直接翻译给定请求的代码。大多数编程语言(包括 SQL)被设计为更易于人们阅读,这也导致了一个问题。为什么会有问题?所有编程语言都能比其他语言更快地执行某些操作。在关系数据库中,查询优化器用于分析 SQL 查询并确定称为查询计划的有效执行机制。优化器能为每个查询生成一个或多个查询计划,每个查询计划代表运行查询的一种可能方式。然后选择并使用最有效的查询计划来运行查询。事实证明,模仿请求语言的 SQL 很少是最有效的方法。

在常见的 SQL 查询错误系列的这一部分中,我们将探讨一个编写不佳的 SQL 语句的示例,并以提高效率的方式重写它。

一些最常见的 SQL 查询错误 - 第 1 部分 2022 年 4 月 11 日,由 Robert Gravelle 撰写

NOT IN 与 NOT EXISTS

在编程界,有一个常用的术语称为“反模式(anti-pattern)”。它指的是解决反复出现的问题的方法,这种方法不仅无效,而且有可能适得其反。这个术语最初是由计算机程序员 Andrew Koenig 于 1995 年在他的《设计模式》一书中创造的,作为被认为既可靠又有效的设计模式的相反词。

Navicat 文章
频道条目
分享
文章归档