【问题标题】:What is an efficient way to exclude all results from a sql query?从 sql 查询中排除所有结果的有效方法是什么?
【发布时间】:2015-02-04 04:22:19
【问题描述】:

很惊讶我以前从未见过这个,但谷歌搜索并没有产生太多的洞察力。

我正在使用一个将生成 SQL 查询的框架,不管你喜欢与否。我有能力对查询添加过滤,并且出现了我希望排除所有可能结果的情况。

我最初的想法是在查询的 WHERE 子句中添加WHERE 1 = 0

有没有更优化或更有效的方法来做到这一点?

由于此答案可能因平台而异,因此将在 SQL Server 2008 上运行

【问题讨论】:

  • 我确信优化器知道1不是0,所以这似乎是一种有效的方式。
  • 是的,这也是我的猜测,但我认为最好找出答案,而不是仅仅按照自己的假设进行。

标签: sql sql-server-2008 tsql optimization


【解决方案1】:

WHERE 1 = 0 是最常用的方法。使用SELECT ... INTO #temp WHERE 1 = 0 创建临时表结构很常见。

请注意,这种情况会导致查询引擎短路查询计划,因此在使用它进行查询分析时要小心。

【讨论】:

  • 意思是分析会产生意想不到的结果?听起来在生产方面它是一个可以接受的解决方案。
  • @JustinStandard 意思是说,查询执行计划不适用。如果您正在调试查询计划,那就不好了。您没有为问题指定上下文。
【解决方案2】:

你是对的,这是从查询中排除所有结果的最佳且最常用的方法:

WHERE 1=0

【讨论】:

  • 最好提供一个官方文件的链接来说明这一点。
  • 如果有人提供更好的答案,我会更新所选答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
相关资源
最近更新 更多