SQL返回基于查询结果的自定义值,同时考虑性能

SQL返回基于查询结果的自定义值,同时考虑性能,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要一个非常缓慢的查询性能方面的帮助 查询对列执行大小写以返回不同的文本值 根据数字。 如果我有一个值为1-5和8-10的表,如果某个值为1,它应该显示“Apple”,如果它是2,它必须显示“pear”,如果它不是1-5,那么它就是“other”。目前正在使用case语句,但我听说查询中的函数会使其速度变慢 我只想显示“措辞”而不是数字,但因为表太大了,我觉得它就像是在迭代每一行来确定要显示什么 有没有更快的方法。我考虑过做一个连接,这似乎很好,但我不知道如何为除1-5之外的任何东西编写“ot

我需要一个非常缓慢的查询性能方面的帮助

查询对列执行大小写以返回不同的文本值 根据数字。 如果我有一个值为1-5和8-10的表,如果某个值为1,它应该显示“Apple”,如果它是2,它必须显示“pear”,如果它不是1-5,那么它就是“other”。目前正在使用case语句,但我听说查询中的函数会使其速度变慢

我只想显示“措辞”而不是数字,但因为表太大了,我觉得它就像是在迭代每一行来确定要显示什么


有没有更快的方法。我考虑过做一个连接,这似乎很好,但我不知道如何为除1-5之外的任何东西编写“other”a
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

不过,我希望案例陈述会稍微快一点。

为了帮助我们,请您将问题添加到您的问题中