SQL案例与乘法
我有这样一个问题:SQL案例与乘法,sql,sql-server,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 您不必担心这种优化 SQL查询的开销通常是读取数据、提取记录和返回结果。简单的操作,如乘法或比较是次要的。某些操作可能会变得昂贵(例如使用用户定义
SELECT
CASE WHEN IsAdd = 1
THEN
Base + Extra
ELSE
Base
END
FROM MyTable
使用乘法消除CASE语句会有更好的性能吗
SELECT
Base + Extra * ISNULL(IsAdd, 0)
FROM MyTable
您不必担心这种优化 SQL查询的开销通常是读取数据、提取记录和返回结果。简单的操作,如乘法或比较是次要的。某些操作可能会变得昂贵(例如使用用户定义的函数、长字符串等)。但乘法一般不会是其中之一 因此,关注什么最能代表你想要完成的工作。您的两个查询所表达的逻辑并不完全相同。如果
IsAdd
仅采用0
、1
和NULL
的值,则它们可能恰好相同。但你应该使用最能表达你意图的版本
顺便说一下,我更喜欢
COALESCE()
而不是ISNULL()
,因为它是标准的。过早/微观优化。极客们喜欢它。我喜欢它。这是浪费你的时间。只有在你证明了这些细节是一个问题并且值得你花费时间之后,才能专注于大局,深入研究这些细节。实际上需要优化的问题总是不是你想象中的问题。