我在SQL Server 2005中维护一个函数,它基于整数输入参数需要调用不同的函数,例如SQL Server函数中大if子句的性能改进
IF @rule_id = 1
-- execute function 1
ELSE IF @rule_id = 2
-- execute function 2
ELSE IF @rule_id = 3
... etc
的问题是,有一个公平的一些规则(约100),虽然上面是相当可读的,它的性能是不是很大。目前它是作为一系列IF执行的,它执行的是二进制的快捷方式,但是读取和维护起来相当不愉快。对于表现良好且相当可维护的东西,有没有其他想法?
最终调用的函数有多相似? – 2010-03-15 21:49:21
函数参数都是一样的,但它们内部完成的工作是非常不同的。 – 2010-03-15 22:06:17
'CASE/WHEN'布局可能更具性能,但解析器可能已经在内部对其进行了优化。我个人对“CASE”的偏好是在每个WHEN块之间留出一条空白行,以使其更具可读性。 – devstuff 2010-03-16 03:26:53