南油网站建设,网站建设可行性分析表,wordpress 左侧菜单,网站域名费一年交多少你是否曾在 SELECT 查询中看到过 WHERE 11 条件。我在许多不同的查询和许多 SQL 引擎中都有看过。这条件显然意味着 WHERE TRUE#xff0c;所以它只是返回与没有 WHERE 子句时相同的查询结果。此外#xff0c;由于查询优化器几乎肯定会删除它#xff0c;因此对查询执行时间没… 你是否曾在 SELECT 查询中看到过 WHERE 11 条件。我在许多不同的查询和许多 SQL 引擎中都有看过。这条件显然意味着 WHERE TRUE所以它只是返回与没有 WHERE 子句时相同的查询结果。此外由于查询优化器几乎肯定会删除它因此对查询执行时间没有影响。那么WHERE 11 的作用是什么这就是我们今天要在这里回答的问题
WHERE 11 会改善查询执行吗
正如前文中所述我们预计查询优化器会删除硬编码的 WHERE 11 子句因此我们不应看到查询执行时间减少。为了证实这个假设让我们在 Navicat 中运行一个有和一个无 WHERE 11 子句的 SELECT 查询。
首先以下是在 Sakila 示例数据库运行的查询获取从 Lethbridge 商店租借电影的客户 在信息选项卡的底部可以看到 0.004 秒的运行时间用红色方框突出显示。
现在让我们运行相同的查询但添加了 WHERE 11 子句 同样运行时间为 0.004 秒。尽管查询的运行时间可能因许多因素会略有波动但可以肯定地说 WHERE 11 子句对其没有任何影响。
那么为什么要使用它呢简单来说就是...
为方便而设
事实上WHERE 11 子句只是一些开发人员采用的一种惯性做法以简化静态和动态形式的 SQL 语句的使用。
在静态 SQL 中
向已经具有 WHERE 11 的查询添加条件时此后的所有条件都将包含 AND因此在注释掉试验查询的条件时更容易。 这类似于另一种在列名之前而不是之后加入逗号的技巧。同样更容易注释 在动态 SQL 中
这也是以编程方式构建 SQL 查询时的常见做法。从“WHERE 11”开始然后附加其他条件例如“ and customer.id:custId”具体取决于是否提供了客户 ID。这允许开发人员在查询中附加以“and ...”开头的下一个条件。这是一个假设的例子
stmt SELECT *
stmt FROM TABLE
stmt WHERE 11
if user chooses option a then stmt and A is not null
if user chooses option b then stmt and B is not null
if user chooses option b then stmt and C is not null
if user chooses option b then stmt 总结
在这篇文章中我们了解到“WHERE 11 的目的是什么”这个古老问题的答案。它不是一种高级优化技巧而是一些开发人员所主张的一种风格惯例。