问题描述
因为现在接一下个项目他的表有200W条数据我用fill DataSet全过来的话 我的机子就重启了所以在这里想收集一下大家所使用的SQL存储过程希望大家能够支持谢谢
解决方案
解决方案二:
我不用数据库,大数据量一般用lucene
解决方案三:
用临时表分页的存储过程:setANSI_NULLSONsetQUOTED_IDENTIFIERONGOALTERPROCEDURE[dbo].[SplistPageTest]@pagesizeint,@pageindexint,@docountbitAS/*前台一般是一个返回就当一个结果集,不管这个返回是结果集,还是操作的反馈信息.为了保证前台得到的只是真实的记录集,而不是反馈信息,因此得使用setnocounton*/--setnocountonif(@docount=1)selectcount(id)fromtest01elsebegindeclare@indextabletable(idintidentity(1,1),nidint)/*在此声明一个内存表,identity设置自动增长字段,步长为1*/declare@PageLowerBoundintdeclare@PageUpperBoundintset@PageLowerBound=(@pageindex-1)*@pagesizeset@PageUpperBound=@PageLowerBound+@pagesize--setrowcount@PageUpperBound/*rowcount截至返回的行数*/insertinto@indextable(nid)selectidfromtest01orderbyidascselectO.id,O.namefromtest01O,@indextabletwhereO.id=t.nidandt.id>@PageLowerBoundandt.id<=@PageUpperBoundend--setnocountoff效率还可以还有一种:调用:EXECspAll_ReturnRows'SELECT*FROM表名',页号,返回记录数,'主键','排序字段'spAll_ReturnRows'SELECT*FROMall_Categories',2,10,'[ID]','[ID]'说明:[百万级]通用存储过程.分页存储过程..返回指定返回条数、指定页数的记录*/CREATEPROCEDUREdbo.spAll_ReturnRows(@SQLnVARCHAR(4000),@Pageint,@RecsPerPageint,@IDVARCHAR(255),@SortVARCHAR(255))ASDECLARE@StrnVARCHAR(4000)SET@Str='SELECTTOP'+CAST(@RecsPerPageASVARCHAR(20))+'*FROM('+@SQL+')TWHERET.'+@ID+'NOTIN(SELECTTOP'+CAST((@RecsPerPage*(@Page-1))ASVARCHAR(20))+''+@ID+'FROM('+@SQL+')T9ORDERBY'+@Sort+')ORDERBY'+@SortPRINT@StrEXECsp_ExecuteSql@StrGO/*名称:spAll_DeleteNoneUnique输入:要查询的表名和字段列表输出:调用:说明:实现千万级数据的分页显示!--可以在5秒内获取1448万条记录里的第1200页的100条记录,雄不?*/CREATEPROCEDUREGetRecordFromPage@tblNamevarchar(255),--表名@fldNamevarchar(255),--字段名@PageSizeint=10,--页尺寸@PageIndexint=1,--页码@IsCountbit=0,--返回记录总数,非0值则返回@OrderTypebit=0,--设置排序类型,非0值则降序@strWherevarchar(1000)=''--查询条件(注意:不要加where)ASdeclare@strSQLvarchar(6000)--主语句declare@strTmpvarchar(100)--临时变量declare@strOrdervarchar(400)--排序类型if@OrderType!=0beginset@strTmp="<(selectmin"set@strOrder="orderby["+@fldName+"]desc"endelsebeginset@strTmp=">(selectmax"set@strOrder="orderby["+@fldName+"]asc"endset@strSQL="selecttop"+str(@PageSize)+"*from["+@tblName+"]where["+@fldName+"]"+@strTmp+"(["+@fldName+"])from(selecttop"+str((@PageIndex-1)*@PageSize)+"["+@fldName+"]from["+@tblName+"]"+@strOrder+")astblTmp)"+@strOrderif@strWhere!=''set@strSQL="selecttop"+str(@PageSize)+"*from["+@tblName+"]where["+@fldName+"]"+@strTmp+"(["+@fldName+"])from(selecttop"+str((@PageIndex-1)*@PageSize)+"["+@fldName+"]from["+@tblName+"]where"+@strWhere+""+@strOrder+")astblTmp)and"+@strWhere+""+@strOrderif@PageIndex=1beginset@strTmp=""if@strWhere!=''set@strTmp="where"+@strWhereset@strSQL="selecttop"+str(@PageSize)+"*from["+@tblName+"]"+@strTmp+""+@strOrderendif@IsCount!=0set@strSQL="selectcount(*)asTotalfrom["+@tblName+"]"exec(@strSQL)GO
解决方案四:
study
解决方案五:
学习..关注..
解决方案六:
RE:michael_sw----------------这个是不是您现在所用的存储过程啊PS:是自已现在用的 不是网上的谢谢
解决方案七:
UP
解决方案八:
接分