有多少次你发现某个查询在针对经过清理的数据进行测试时能发挥充分的性能,但在生产环境中却只看到它停止一次?由于工作负载和数据量等环境之间的差异,这种情况一直在发生。因为这个原因,你可能会在生产环境中尝试你的查询。毕竟,调整生产查询的最快方法是在生产服务器上,不是吗?虽然这是正确,但仍有许多危险等待着那些愚蠢到无视保障措施和协议的人。在本文中,我们将探讨在生产环境中测试查询的一些相关风险。
SQL Server 提供了多种数据类型,支持你想要存储的所有数据类型。你可能已经猜到,数据类型是一个属性,用于指定列可以存储数据的类型。它可以是整数、字符串、货币、日期和时间等。在数据库设计人员和开发人员之间引起混淆的一种数据类型是用于存储字符串的数据类型。字符串是作为一组操作的一系列字符。在关系数据库的上下文中,字符串数据类型是那些让你存储固定长度(char)或可变长度数据(varchar)的数据类型。此外,SQL Server 将其字符串类型分为两大类:Unicode 和非 Unicode。Unicode 类型有 nchar、nvarchar 和 ntext,而非 Unicode 类型有 char、varchar/varchar (max) 和 text。在今天的文章中,我们将比较这两个类别,以决定何时使用它们。
你是否曾在 SELECT 查询中看到过 WHERE 1=1 条件。我在许多不同的查询和许多 SQL 引擎中都有看过。这条件显然意味着 WHERE TRUE,所以它只是返回与没有 WHERE 子句时相同的查询结果。此外,由于查询优化器几乎肯定会删除它,因此对查询执行时间没有影响。那么,WHERE 1=1 的作用是什么?这就是我们今天要在这里回答的问题!
早在 2020 年 3 月,关系数据库系统中的 NULL 值及其用途一文就介绍了 NULL 值及其在关系数据库中的特殊含义。那篇文章还描述了如何在数据库表中允许 NULL 以及如何在查询中引用它们。在今天的文章中,我们将学习如何将 NULL 与 SQL Count() 函数结合以实现各种目标。
CROSS APPLY 和 OUTER APPLY 示例
上一篇文章介绍了 APPLY 运算符并介绍了它与常规 JOIN 的区别。在今天的后续文章中,我们将比较 APPLY 与 INNER JOIN 的性能,并学习如何将 APPLY 与表值函数一起使用。
- 2024 (1)
- 2023 (1)
- 2022 (1)
- 2021 (1)
- 2020 (1)
- 2019 (1)
- 2018 (1)
- 2017 (1)