微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用例语句用于跳过过滤器的地方会影响查询的性能?

如何解决用例语句用于跳过过滤器的地方会影响查询的性能?

我对所有需要可选过滤器的查询都采用这种逻辑,所以我的问题是不良做法吗?是否会影响执行性能

示例:

SELECT 
    USR_NAME,USR_LAST_NAME
FROM 
    KTZ_USER
WHERE
    --- OPTIONAL FILTER ---
    (CASE 
        WHEN @V_USER_NAME IS NULL THEN 1 
        ELSE 
            CASE WHEN USR_NAME = @V_USER_NAME THEN 1 
                 ELSE 0 
            END 
     END) = 1

@V_USER_NAME是参数

解决方法

您的where子句没有问题,但我会使用此版本:

SELECT USR_NAME,USR_LAST_NAME
FROM KTZ_USER
WHERE @V_USER_NAME IS NULL OR @V_USER_NAME = USR_NAME;

通常CASE表达式旨在用于生成标量值。我们可以更直接地表达您的过滤器逻辑,而无需使用它们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。