我需要有关查询性能的帮助,我的速度非常慢。
查询在列上执行大小写以返回不同的文本值 根据数量。 如果我有一个值为1-5和8-10的表如果某个值为1,它应该显示'Apple'或如果它是2它必须显示'pear'如果它不是1-5,那么它是'其他'。目前正在使用case语句,但我听说查询中的函数使它变慢。
我想要的只是出现'Wording'而不是数字,但由于表格太大,我觉得它只是迭代每一行来确定要显示的内容。
有没有更快的方法这样做。我考虑做一个连接,看起来它会很好用,但我不知道如何为1-5以外的任何东西写'其他'
答案 0 :(得分:1)
case
语句不是函数。用户定义的函数在某些版本的SQL中确实有额外的开销。作为一般规则,您不需要担心内置函数的开销。
您可以通过以下方式执行此操作:
with lookup as (
select 1 as val, 'Apple' as str union all
select 2 as val, 'Pear' as str union all
select 3 union all select 4 union all select 5
)
select coalesce(l.val, 'other')
from t left outer join
lookup l
on t.col = l.val
我希望案例陈述能够略微加快。