Как оптимизировать и улучшить производительность для следующего кода? Он извлекает большое количество записей, следовательно, низкая производительность - PullRequest
0 голосов
/ 09 января 2019

Как оптимизировать и улучшить производительность для следующей хранимой процедуры Sql? Он извлекает большое количество записей, что приводит к снижению производительности.

Столбец также не является кластерным индексатором.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET NOCOUNT ON
GO

- Выбрать все записи из таблицы на основе T

 ALTER PROC [dbo].[Usp_SP1]  
    @T nvarchar(50)  
    AS  

    IF @T = 'ABC'  
    BEGIN  
 SELECT   
  xyz as [XYZK],  
  COALESCE(RTRIM(LTRIM(T)),'') AS T,  
  COALESCE(RTRIM(LTRIM(V)),'')  AS V,  
  COALESCE(RTRIM(LTRIM(Des)),'') AS Des,  
  COALESCE(Seq, 0) AS Seq,  
  COALESCE(Ac,0) AS Ac,  
  COALESCE(RTRIM(LTRIM(U)),'') AS U,  
  COALESCE(Ac,0) AS Ac,
    COALESCE(L,0) AS _L,
        COALESCE(M,0) AS _M,
        COALESCE(E,0) AS _E,
        COALESCE(S,0) AS _S


 FROM tblA WITH (NOLOCK)  
 WHERE  T = @T  ORDER BY V, Seq  
END   
ELSE  
BEGIN  
 SELECT   
  xyz as [XYZK],  
  COALESCE(RTRIM(LTRIM(T)),'') AS T,  
  COALESCE(RTRIM(LTRIM(V)),'')  AS V,  
  COALESCE(RTRIM(LTRIM(Des)),'') AS Des,  
  COALESCE(Seq, 0) AS Seq,  
  COALESCE(Ac,0) AS Ac,  
  COALESCE(RTRIM(LTRIM(U)),'') AS U,  
  COALESCE(Ac,0) AS Ac,
    COALESCE(L,0) AS _L,
        COALESCE(M,0) AS _M,
        COALESCE(E,0) AS _E,
        COALESCE(S,0) AS _S


 FROM tblA WITH (NOLOCK)   
 WHERE  T = @T  ORDER BY Seq 
END

SET NOCOUNT OFF
GO

Для выполнения запроса требуется минимальное время, и его следует оптимизировать.

...