我们存储过程如下。执行2000条内容20个字段的内容的数据需要3称,执行5万条测试数据带内容需要2万,这是在没有添加任何判断条件的情况。能让速度达到,1称以内最好。如果大量访问,肯定执行效率就变慢了。请高手看看,这存储过程有没有速度再提升的优化办法,数据sql2008R2,我的数据量有,10-20万。/****** Object:  StoredProcedure [dbo].[dl_selectInfo]    Script Date: 09/02/2011 23:14:53 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
------------------------------------
--用途:查询详细信息 
--项目名称:slectInfomaction
--说明:
--@topNum 查询记录数,为0或者空表示全部
--@sField 查询的字段
--@sTable 查询的表
--@sCondition 查询条件
--@sOrder 排序
--时间:2009-1-14 0:01:43
------------------------------------
ALTER PROCEDURE [dbo].[dl_selectInfo]
(
 @topNum int,
 @sField nvarchar(1000),
 @sTable nvarchar(100),
 @sCondition nvarchar(1000),
 @sOrder nvarchar(100)
)
AS 
 DECLARE @sCond1 nvarchar(1000)
 DECLARE @iAsc int,@iDesc int
 DECLARE @topStr nvarchar(50),@sFieldStr nvarchar(1000),@sOrderTmp nvarchar(1000),@sSQL nvarchar(4000)
 IF @topNum=0 
   begin
    set @topStr=''
   end
 Else
   begin
     set @topStr='top '+ CAST(@topNum AS nvarchar)
   end
 IF @sField='' or len(@sField)<=0
   begin
    set @sFieldStr='*'
   end
 Else
   begin
     set @sFieldStr=@sField
   end
 IF LEN(@sCondition)>2
  BEGIN
   SET @sCond1=' WHERE '+@sCondition
  END
 ELSE
  BEGIN
   SET @sCond1=''
  END
 IF LEN(@sCondition)>2
  BEGIN
   SET @sCond1=' WHERE '+@sCondition
  END
 ELSE
  BEGIN
   SET @sCond1=''
  END
 IF LEN(@sOrder)<4
  BEGIN
   SET @sOrder=''
  END
 Else
  BEGIN
   SET @sOrderTmp=UPPER(@sOrder)
   --SET @sOrderTmp=SUBSTRING(@sOrderTmp,CHARINDEX(UPPER(@sPkey),@sOrderTmp),LEN(@sOrderTmp))
   SET @iAsc=CHARINDEX('ASC',@sOrderTmp)
   SET @iDesc=CHARINDEX('DESC',@sOrderTmp)
   IF (@iAsc>0 and @iDesc=0) OR ((@iAsc>0 AND @iDesc>0) AND (@iAsc<@iDesc))
    BEGIN
     SET @sOrder=' ORDER BY '+@sOrder
    END
   ELSE IF (@iAsc=0 and @iDesc>0) OR ((@iAsc>0 AND @iDesc>0) AND (@iAsc>@iDesc))
    BEGIN
     SET @sOrder=' ORDER BY '+@sOrder
    END
   ELSE
    BEGIN
     SET @sOrder=''
    END
  ENDSET @sSQL='SELECT  '+@topStr  +' '+@sFieldStr+' FROM '+@sTable+' '+@sCond1+' '+@sOrder
EXEC(@sSQL)