我有这样的查询:
SELECT
CASE WHEN IsAdd = 1
THEN
Base + Extra
ELSE
Base
END
FROM MyTable
使用乘法来消除CASE语句会有更好的表现吗?
SELECT
Base + Extra * ISNULL(IsAdd, 0)
FROM MyTable
答案 0 :(得分:4)
您无需担心此类优化。
SQL查询的费用通常是读取数据,提取记录和返回结果。诸如乘法或比较之类的简单操作很小。某些操作可能变得昂贵(例如使用用户定义的函数,长字符串等)。但乘法通常不会是其中之一。
因此,请关注最能代表您想要完成的工作的内容。您的两个查询不表达完全相同的逻辑。如果IsAdd
仅采用0
,1
和NULL
的值,则它们可能会相同。但是你应该使用最能表达你意图的版本。
顺便说一下,我更喜欢COALESCE()
到ISNULL()
因为它是标准的。