Roy*_*mir 1 sql-server sql-server-2008
我有这个查询(伪代码)
SELECT
a = 1,
b = 2,
c = CASE
WHEN ISNULL(
(SELECT MONTH(GETDATE()) <---long query
), 0) = 0 THEN 'found'
ELSE
SELECT MONTH(GETDATE()) <--- repeated long query
END
Run Code Online (Sandbox Code Playgroud)
问题是SELECT MONTH(GETDATE())实际上这是很长的查询.
这个"长表达式"是否有任何解决方法不会在查询中出现两次?
PS
我有一个计算SELECT MONTH(GETDATE())外部变量的解决方案......但我想弄清楚是否有内联解决方案.
您有多种选择:
根据数据的处理方式,将确定最适合的数据.您的问题没有提供足够的细节来明确提出建议,但这些值得关注.
使用UDF时要小心,因为它们会迅速阻碍性能.我的经验法则是为简单的数据转换或数学计算编写UDF.我试图避免在函数中执行复杂的基于集合的操作,并且更喜欢视图或CTE.
| 归档时间: |
|
| 查看次数: |
1221 次 |
| 最近记录: |