如何重写此过程以减少代码长度?

时间:2012-12-01 07:37:44

标签: sql-server-2008 tsql

以下程序需要更多时间来执行。如何重写此代码以提高性能。请分享您的想法,我在过去4天内遇到了这个问题,但我无法解决。

        with (
                 [identityColumn] [varchar] (10) ,FileClaimNo  int ,EntityIDCode Varchar(20),EntityTypeQualifier  Varchar(20),PreviousEntityTypeQualifier varchar(10),Qualifier varchar(2),LineItemNo int ,REFQualifier Varchar(20),REFQualifierValue varchar(50)

提前感谢。

2 个答案:

答案 0 :(得分:1)

在这里给出任何好的建议是相当棘手的 - 只是一大堆T-SQL代码,没有解释它应该做什么,没有表格结构,没有关于索引的信息等......

我可以提出的几个模糊的建议是:

  1. 如果参数@P_CMSProviderxml@P_CMSQualifierxml是XML,请将其设为XML类型(不是NTEXT which is deprecated and should not be used anymore

    < / LI>
  2. 在开始时将XML解析为临时表或表变量一次 - 不要在代码中执行五次

  3. 如果这个存储过程正在做五件事 - 它做得太多了。将它分成五个不同的存储过程,每个过程执行一件事(并且仅一件事)。

  4. 不要试图一次“解决”所有问题 - 尝试将问题分解为更小的块,找出问题,一次解决一个问题(如(a)解析XML,以及(b)定义正确更新等。)

答案 1 :(得分:0)

尝试将ntext更改为nvarchar(4000)

如果仍然很慢,那么设置showplan_all;检查哪个陈述具有更高的估计值或估计值