【问题标题】:Benefits of using a Case statement over an If statement in a stored procedure?在存储过程中使用 Case 语句而不是 If 语句的好处?
【发布时间】:2010-09-15 06:27:51
【问题描述】:

您好,在使用 IF 语句或选择使用 CASE 语句时,存储过程的执行速度有什么优缺点吗?

【问题讨论】:

  • 如果不知道您要做什么的细节,就不可能回答这个问题。在存储过程中,像 T-SQL IF 和 CASE 这样的语言用于完全不同的事情。语句中使用 CASE 而不是 IF。
  • 我同意。 CASE 是一个表达式,IF 控制执行流程。您必须给出一个代码示例,您试图在两者之间做出决定。我猜你要么试图有条件地设置一个变量(在这里使用 CASE,但不用于 perf),或者你误解了 CASE。

标签: sql sql-server stored-procedures


【解决方案1】:

如果可以避免的话,我尽量不使用IFs,因为它们是非事务性的,即您通常不能保证IF 的条件在BEGIN... END 块内仍然有效IF.

例如,我假设您的意思是在 SQL SELECT 中使用 CASE 语句。如果使用是为了避免IF,那么一定要这样做。

SQL 的黄金法则是:让服务器弄清楚如何做事,告诉服务器你想要什么

【讨论】:

    【解决方案2】:

    不要担心 case 和 IF 语句之间的速度差异。因为您正在处理数据库,所以从磁盘写入或读取所需的时间将比 CPU 通过 IF 或 Case 分支所需的时间相形见绌。相反,您应该专注于使您的代码更具可读性和可维护性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 2011-04-29
      • 2019-02-27
      • 1970-01-01
      • 2014-12-01
      相关资源
      最近更新 更多