我桌上有很多记录。当我执行以下查询时,它会花费很多时间。如何提高性能?

SET ROWCOUNT 10
SELECT StxnID
      ,Sprovider.description as SProvider
      ,txnID
      ,Request
      ,Raw
      ,Status
      ,txnBal
      ,Stxn.CreatedBy
      ,Stxn.CreatedOn
      ,Stxn.ModifiedBy
      ,Stxn.ModifiedOn
      ,Stxn.isDeleted
  FROM Stxn,Sprovider
  WHERE Stxn.SproviderID = SProvider.Sproviderid
  AND Stxn.SProviderid = ISNULL(@pSProviderID,Stxn.SProviderid)
  AND Stxn.status = ISNULL(@pStatus,Stxn.status)
  AND Stxn.CreatedOn BETWEEN ISNULL(@pStartDate,getdate()-1) and  ISNULL(@pEndDate,getdate())
  AND Stxn.CreatedBy = ISNULL(@pSellerId,Stxn.CreatedBy)
  ORDER BY StxnID DESC


stxn表具有超过100,000条记录。

该查询从asp.net c#中的报表查看器运行。

最佳答案

当我尝试执行具有多个搜索条件(可能是可选的)的搜索查询时,这是我的热门文章。

http://www.sommarskog.se/dyn-search-2008.html

查询的最大问题是column=ISNULL(@column, column)语法。 MSSQL不会为此使用索引。考虑将其更改为(column = @column AND @column IS NOT NULL)

关于sql - 如何提高查询性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6876189/

10-11 23:48