gpt4 book ai didi

SQL 性能方面,: an IF. ..ELSE 子句和 WHERE LIKE 子句哪个更好?

转载 作者:行者123 更新时间:2023-12-04 13:10:29 26 4
gpt4 key购买 nike

我有一个存储过程,它有一个可选参数,@UserID VARCHAR(50) .问题是,有两种方法可以使用它:

  • 给它一个默认值 NULL , 有一个 IF...ELSE子句,执行两个不同的 SELECT查询,与 'WHERE UserID = @UserID' 之一而没有哪里。
  • 给它一个默认值 '%'然后让 where 子句使用 'WHERE UserID LIKE @UserID' .在调用代码中,不会使用“%”,因此只会找到完全匹配的内容。

  • 问题是:哪个选项更快?随着表的增长,哪个选项提供更好的性能?请注意 UserID column 是外键,没有索引。

    编辑:根据一些答案,我想添加一些内容: @UserID参数不是(必然)传递的唯一可选参数。在某些情况下,有多达 4 或 5 个可选参数。

    最佳答案

    我通常做的是

    WHERE ( @UserID IS NULL OR UserID = @UserID )

    为什么它没有索引?索引 FK 通常是一种很好的形式,因为您经常加入它们......

    如果您担心查询计划存储,只需执行以下操作:
    创建过程...重新编译

    关于SQL 性能方面,: an IF. ..ELSE 子句和 WHERE LIKE 子句哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/266697/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com