我试图优化查询以尽可能优化执行,我发现某些代码是别人编写的并且已经与他们讨论过,他们似乎认为以下是表现最好的:在ISNULL中包含CASE语句时的SQL性能
ISNULL(CASE WHEN A = 1 THEN 1 END, 0)
不过,我说,这可以通过以下方式进行明确,并可能更有效:
CASE WHEN A = 1 THEN 1 ELSE 0 END
我在网上找了一个类似的案件,但似乎无法找到一个明确的答案,所以我正在寻找一个人更多有关基于性能的T-SQL设计的经验,让我更好地了解哪个(如果有的话)执行速度更快。
* * *变体实际上是应用程序性能瓶颈的几率可以忽略不计。不要把注意力集中在错误的地方。如果你有特定的目标,并且与这些目标相比你有一个*可衡量的*绩效赤字,那么计算出*真实*热点的位置并将注意力集中在那里。 –
我同意@Damien_The_Unbeliever,并补充一点,请记住,ISNULL将评估数据_before_存在的任何数据类型的评估发生。如果删除了ISNULL,必要时将尝试隐式数据类型,这可能会导致性能问题。尽管如此,这是无关紧要的。 – Phoenix
您可以检查查询计划,以查看查询引擎是否实际上存在差异 - 看起来像是一个非常小的微型优化,尽管它根本就没有。 – Andrew