分页问题(速度超慢)
表中数据才12万条多点 
       以前是取出所有数据,在页面中分页的,可时常出现out   of   memory 
       现在改用存储过程分页,内存溢出问题已经解决了,没发生过,但却出现SQL超时:Microsoft   OLE   DB   Provider   for   SQL   Server   error    '80040e31 '      Timeout   expired 
 查了资料,找了原因,,但还是没有解决。   
 情况是:前面的页面一切正常,只要浏览超过3000左右的页面时,就出现超时 
 在分析器里执行远程的那个存储过程的结果: 
 当前页         执行时间(分) 
 1   	00:1 
 10   	00:1 
 100   	00:1 
 500   	00:5 
 1000   	00:8 
 1500   	00:17 
 2000	00:25 
 3000	00:51 
 4000	01:25 
 5000	02:11 
 如果查询到最后一页,,好久都没结果出来(等了2分多钟没等下去,就取消了)   
 存储过程中主要就2条查询语句: 
 SELECT   COUNT(1)   FROM   tb_actual   WHERE   (   DeletedFlag=0   and   ActualType   =   0   and      TradeID=0   and      keyword   not   like   N '%yd% '   and   ((isnull(Actualname,N ' ')+isnull(address,N ' ')+isnull(companyname,N ' ')+isnull(keyword,N ' '))   like   N '%广州% '   )   )   
 SELECT   Top   10   ID,ActualName,AgentCode,.......   FROM   tb_actual   WHERE   ID   NOT   IN   (SELECT   TOP   112180   ID   FROM   tb_actual   WHERE   (   DeletedFlag=0   and   ActualType   =   0   and      TradeID=0   and      keyword   not   like   N '%yd% '   and   ((isnull(Actualname,N ' ')+isnull(address,N ' ')+isnull(companyname,N ' ')+isnull(keyword,N ' '))   like   N '%广州% '   )   )      Order   By   ID   Desc)   AND   (   DeletedFlag=0   and   ActualType   =   0   and      TradeID=0   and      keyword   not   like   N '%yd% '   and   ((isnull(Actualname,N ' ')+isnull(address,N ' ')+isnull(companyname,N ' ')+isnull(keyword,N ' '))   like   N '%广州% '   )   )      Order   By   ID   Desc   
 我所想到的: 
 1、MSSQL属性中的 "连接 "选项卡 "查询超时设定 "为默认的600秒,我想已经够大了 
 2、表中自增ID,条件中的字段都建了索引。   
 存储过程主要就这些语句:     
 CREATE      PROCEDURE   [dbo].[sp_Wap_ActualSplitPage] 
 	@tblName      		NVARCHAR(500)=N 'tb_actual ',	--表,视图,查询语句 
 	@fldNames   		NVARCHAR(1000)=N '* ',		--要显示的字段列表 
 	@PageSize		INT=10,				--每页显示的记录数 
 	@curPage		BIGINT=1   OUTPUT,		--当前页 
 	@TotalRecordNum   	BIGINT=0   OUTPUT,		--总记录数 
 	@fldOrder		VARCHAR(255),			--关键字段 
             	@strWhere               		NVARCHAR(1000)   =   N ' ',      		--查询条件 
             	@strOrder            		NVARCHAR(1000)   =   N ' ',                        	--设置排序 
 	....... 
 AS      
 	set   nocount   on   
 	declare   @InsideWhere   nvarchar(4000)   
 	DECLARE   @strSQL   NVARCHAR(4000),@strTmpSQL   NVARCHAR(2000),@intTmpRecordNum   INT,@intTmpTotalPage   INT 
 	Select   @strWhere=CASE   ISNULL(@strWhere,N ' ')   WHEN   N ' '   THEN   N '   1=1    '   ELSE   @strWhere   END 
 	Select   @strOrder=CASE   ISNULL(@strOrder,N ' ')   WHEN   N ' '   THEN   N ' '   Els