SqlServer分页的问题
现在想实现模糊搜索时,能实现分页的效果,我已在网上找到了相应了方法: 
 如下: 
 ALTER   PROCEDURE   [dbo].[GetDataByPage] 
    ( 
       @SQL   nVARCHAR(4000), 
       @currentPage   int, 
       @RecsPerPage   nvarchar(50), 
       @selectField   VARCHAR(255), 
       @sortField   VARCHAR(255) 
    ) 
    AS      
    DECLARE   @Str   nVARCHAR(4000)      
 	if(@currentPage=1) 
 	begin 
 		set   @Str   =    'Select   top    '+@RecsPerPage   +   SubString(@SQL,7,3000)+ '   ORDER   BY    '+@sortField+ '   DESC ' 
 	end 
 	else 
 	begin 
 		   SET   @Str= 'SELECT         TOP    '+CAST(@RecsPerPage   AS   VARCHAR(20))+ '   *   FROM   ( '+@SQL+ ')   T   WHERE   T. '+@selectField+ '   NOT   IN    
 		   (SELECT         TOP    '+CAST((@RecsPerPage*(@currentPage-1))   AS   VARCHAR(20))+ '    '+@selectField+ '   FROM   ( '+@SQL+ ')   T9   ORDER   BY    '+@sortField+ '   DESC)   ORDER   BY    '+@sortField+ '   DESC ' 
    	end 
    EXEC   sp_ExecuteSql   @Str 
 但是对LIKE的那种SQL语句,在前几页效果还行,但是在到100000万条左右时,效果很慢,大约得需要10几秒钟,请问大家有没有好的办法,帮帮忙啊,还有就是该对这个字段如何建索引?
------解决方案--------------------用于排序和分页的字段最好建立索引,或者就用主键。楼主可以在网上搜索一下通用分页存储过程,一大堆。推荐用数据库版版主邹健的存储过程。 
 http://community.csdn.net/Expert/topic/4918/4918971.xml?temp=.8418848
------解决方案--------------------not in效率不高,看看有没办法替换...
------解决方案--------------------分页本来就是越到后面越慢   
 TOP-N的分页方式尤其严重,因为使用了NOT IN谓词运算   
 建议使用ROWCOUNT分页方式,这种方式在开始的时候没有TOP那么快,但是到了后面却比对应的TOP快N多,因为不用使用不必要的谓词操作,制作索引的时候可以较方便的优化   
 而且你使用的是动态SQL,SQLSERVER必须每次都解释执行计划,但是这个的影响不是特别大,但我觉得你还是用代码组装好了SQL再发过来比较好,反正都是要单独解释执行计划,还不如让代码好看一些
------解决方案--------------------http://community.csdn.net/Expert/topic/4918/4918971.xml?temp=.8418848 
 这个确实很好。用这个吧。