繁体   English   中英

如何用有效的代码替换T-SQL CASE语句

[英]how to replace T-SQL CASE statement with efficient code

我如何用有效的代码替换以下case语句

SELECT 
CASE WHEN LEN(Code.Description)>=30
    THEN left(Code.Description, 30) + '...' 
    ELSE NominalCode.Description END AS ShortDescription
FROM Code

因为返回的数据集将是30-50,000条记录,并且根据领导开发,此代码是荒谬的。 我需要帮助

大概您打算:

SELECT (CASE WHEN LEN(c.Description) > 30
             THEN left(c.Description, 30) + '...' 
             ELSE c.Description
        END) AS ShortDescription
FROM Code c;

也就是说,“ Description列引用全部来自同一表。 您的代码很好。

但是,我将调整语义,以使所得的字符串始终具有相同的长度:

SELECT (CASE WHEN LEN(c.Description) > 30
             THEN LEFT(c.Description, 27) + '...' 
             ELSE c.Description
        END) AS ShortDescription
FROM Code c;

除了在您的产品表中添加ShortDesc字段外,也许我会尝试以下操作

Concat(left(Code.Description,30),IIF(Len(Code.Description)>30,'...',''))

甚至

left(Code.Description,30)+IIF(Len(Code.Description)>30,'...','')

编辑

但是,正如您看到的执行计划一样,我的方法的性能提高了18%。 该测试是在隔离的机器上完成的,样本大小为30,000条记录。

<code>在此处输入图片描述</ code>

在此处输入图片说明

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM