第 2 部分:非 SARGable 查询条件
像大多数编程人员一样,数据库开发人员或多或少倾向于编写直接翻译给定请求的代码。大多数编程语言(包括 SQL)被设计为更易于人们阅读,这也导致了一个问题。为什么会有问题?所有编程语言都能比其他语言更快地执行某些操作。在关系数据库中,查询优化器用于分析 SQL 查询并确定称为查询计划的有效执行机制。优化器能为每个查询生成一个或多个查询计划,每个查询计划代表运行查询的一种可能方式。然后选择并使用最有效的查询计划来运行查询。事实证明,模仿请求语言的 SQL 很少是最有效的方法。
在常见的 SQL 查询错误系列的这一部分中,我们将探讨一个编写不佳的 SQL 语句的示例,并以提高效率的方式重写它。
NOT IN 与 NOT EXISTS
在编程界,有一个常用的术语称为“反模式(anti-pattern)”。它指的是解决反复出现的问题的方法,这种方法不仅无效,而且有可能适得其反。这个术语最初是由计算机程序员 Andrew Koenig 于 1995 年在他的《设计模式》一书中创造的,作为被认为既可靠又有效的设计模式的相反词。
按日期查询
在 MySQL 中的日期和时间系列的最后一部分中,我们将通过编写 SELECT 查询来将迄今为止学到的所有知识付诸实践,以获得对数据的与日期相关的细节。
创建日期或时间
在这个关于日期和时间的系列中,我们探索了 MySQL 的五种时态数据类型,以及它的许多面向日期或时间的函数中的一些。在本文中,我们将介绍在 MySQL 中创建日期和时间的几种方法。
重要的函数
在本系列关于日期和时间的前两部分中,我们介绍了 MySQL 的五种时态数据类型。现在是时候将注意力转移到 MySQL 的许多面向日期或时间的函数了。
获取当前日期和时间
早在 2021 年 5 月,我们就从如何获取当前日期和时间开始,介绍了 SQL Server 的一些值得注意的日期和时间函数。它为此提供了 GETDATE() 函数。而 MySQL 的等效函数简称为 NOW()。在 Navicat for MySQL 16 中,我们可以在不连接数据库的情况下调用此函数,因为我们没有选择任何表列:
- 2025 (1)
- 2024 (1)
- 2023 (1)
- 2022 (1)
- 2021 (1)
- 2020 (1)
- 2019 (1)
- 2018 (1)
- 2017 (1)