SQL CASE与乘法

时间:2018-05-16 10:17:45

标签: sql sql-server

我有这样的查询:

SELECT
  CASE WHEN IsAdd = 1
  THEN
    Base + Extra
  ELSE
    Base
  END
FROM MyTable

使用乘法来消除CASE语句会有更好的表现吗?

SELECT
    Base + Extra * ISNULL(IsAdd, 0)
FROM MyTable

1 个答案:

答案 0 :(得分:4)

您无需担心此类优化。

SQL查询的费用通常是读取数据,提取记录和返回结果。诸如乘法或比较之类的简单操作很小。某些操作可能变得昂贵(例如使用用户定义的函数,长字符串等)。但乘法通常不会是其中之一。

因此,请关注最能代表您想要完成的工作的内容。您的两个查询不表达完全相同的逻辑。如果IsAdd仅采用01NULL的值,则它们可能会相同。但是你应该使用最能表达你意图的版本。

顺便说一下,我更喜欢COALESCE()ISNULL()因为它是标准的。