Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何优化和提高以下代码的性能?它获取大量记录,因此性能较慢_Sql_Sql Server_Performance_Stored Procedures - Fatal编程技术网

Sql 如何优化和提高以下代码的性能?它获取大量记录,因此性能较慢

Sql 如何优化和提高以下代码的性能?它获取大量记录,因此性能较慢,sql,sql-server,performance,stored-procedures,Sql,Sql Server,Performance,Stored Procedures,如何优化和提高以下Sql存储过程的性能?它获取大量记录,因此导致性能低下 该列也是非聚集索引器 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET NOCOUNT ON GO -根据T从tblA中选择所有记录 查询的执行时间应最短,并应进行优化。您是否有关于tblA字段T的索引?而且。。。表和预期结果中大约有多少条记录?能否对存储在表中的数据应用修剪?看起来这两个查询之间的唯一区别在于顺序。如果是这样的话,当@t='ABC'然后是V END

如何优化和提高以下Sql存储过程的性能?它获取大量记录,因此导致性能低下

该列也是非聚集索引器

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET NOCOUNT ON
GO
-根据T从tblA中选择所有记录
查询的执行时间应最短,并应进行优化。

您是否有关于tblA字段T的索引?而且。。。表和预期结果中大约有多少条记录?能否对存储在表中的数据应用修剪?看起来这两个查询之间的唯一区别在于顺序。如果是这样的话,当@t='ABC'然后是V END时,您可以只进行一个查询并按大小写顺序,Seq@AngelM. 是的,我在tblA字段“T”上有一个非聚集索引。有超过8k条记录,预期结果大约有7k条记录。如果您返回了几乎所有的记录,并且您的索引没有包含SELECT as中的所有字段,则根本不会使用它。但我很惊讶,它在如此小的数据量上怎么能表现得如此缓慢。您的桌子的大小(Mb)?
 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