【问题标题】:Use IF in SQL Server在 SQL Server 中使用 IF
【发布时间】:2017-09-08 09:43:10
【问题描述】:

我的存储过程中有一个小查询:

case when t.status = 4 and (select top 1 nd.status from tableND 
where nd.Code= t.Code order by nd.ID desc)=4 
then 6 else t.status end) as status from tableTC t

问题是速度表现太慢了。所以,我想把它改成另一个查询。

我现在该怎么办?

【问题讨论】:

  • 显示一些示例数据,它将更好地理解查询正在做什么以及可能的执行计划。你有关于 t.code 的索引吗?
  • 以及对表格结构的一点解释
  • 和 SQLSERVER 的版本
  • 我没有看到if 声明

标签: sql-server performance if-statement stored-procedures case


【解决方案1】:

我无法进行任何测试(您没有发布表格结构和示例数据)。

要避免 CASE 中的 SELECT(每次都重复),您可以尝试以下操作:

CASE WHEN T.status=4 AND ND.STATUS=4 THEN 6 ELSE T.STATUS END AS STATUS
FROM tableTC T
LEFT JOIN (SELECT CODE, STATUS, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY ID DESC) AS RN FROM TABLED) ND ON T.CODE=ND.CODE AND ND.RN=1

【讨论】:

    猜你喜欢
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2016-08-07
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多