千万数量级分页存储过程,可支持多表查询,任意排序

千万数量级分页存储过程,可支持多表查询,任意排序

ID:17454010

大小:27.50 KB

页数:6页

时间:2018-09-01

千万数量级分页存储过程,可支持多表查询,任意排序_第1页
千万数量级分页存储过程,可支持多表查询,任意排序_第2页
千万数量级分页存储过程,可支持多表查询,任意排序_第3页
千万数量级分页存储过程,可支持多表查询,任意排序_第4页
千万数量级分页存储过程,可支持多表查询,任意排序_第5页
资源描述:

《千万数量级分页存储过程,可支持多表查询,任意排序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、千万数量级分页存储过程,可支持多表查询,任意排序千万数量级分页存储过程,可支持多表查询,任意排序.txt从程序中考虑:比如用数据缓冲和连接池技术从数据库服务器端考虑:比如csdn只选出前300行纪录,因为用户不需要那么多纪录。你也不必把1000万条全部分页。你也不必把纪录放在一个表中,一年(太多就一个月)的数据放一张表或定期把历史数据导出到数据数据仓库中,不要用一张表装1000万条记录。做好索引。优化查询!尽量少用模糊查询,避免表扫描。不能让客户端连续多次搜索(csdn就是)千万级的数据库,有分页的意义吗?对于用户来说就是信息的海洋了,去看看Google怎么做的吧,根本就不存在如何分页的问题,

2、如果一个结果有千万条,那跟没有结果一样是没有一样.应该是统计条数,取出,前N条进行分页,如果到地还在准备分页的话,再次取结果n,进行分页.并且在其间推荐用户进行递进式搜索,来降低信息量,才式正确的我有一个方法:(对于喜欢用select*的同行可能有用)先检索出来,符合条件的所有id(唯一标识)放在内存里然后根据当前页数和每页多少行纪录去内存中取id号的当前集根据当前集中的某一条去数据库中检索相应的数据行这里建议使用编译预处理PrepareStatement将结果放进数据类(如果你的数据只有两列当然可以省略这一步)然后把数据类添加进ArrayList或者HashMap然后把载页面上输出Array

3、List或者HashMap的数据这样做,是因为只检索一列数据要比检索多类要快得多占用更少的内存。一次只精确定位一条纪录要比一次取出多条要快,这里的瓶颈在于频繁的与数据库交互,但是我们使用编译预处理可以很大程度上提高性能。千万数量级分页存储过程(可支持多表查询,任意排序)功能不错的分页存储过程,可支持多表查询,任意排序CreatePROCEDUREusp_PagingLarge@TableNamesVARCHAR(200),--表名,可以是多个表,但不能用别名@PrimaryKeyVARCHAR(100),--主键,可以为空,但@Order为空时该值不能为空@FieldsVARCHAR(200)

4、,--要取出的字段,可以是多个表的字段,可以为空,为空表示select*@PageSizeINT,--每页记录数@CurrentPageINT,--当前页,0表示第1页@FilterVARCHAR(200)='',--条件,可以为空,不用填where@GroupVARCHAR(200)='',--分组依据,可以为空,不用填groupby@OrderVARCHAR(200)=''--排序,可以为空,为空默认按主键升序排列,不用填orderbyASBEGINDECLARE@SortColumnVARCHAR(200)DECLARE@OperatorCHAR(2)DECLARE@SortTableV

5、ARCHAR(200)DECLARE@SortNameVARCHAR(200)IF@Fields=''SET@Fields='*'IF@Filter=''SET@Filter='Where1=1'ELSESET@Filter='Where'+@FilterIF@Group<>''SET@Group='GROUPBY'+@GroupIF@Order<>''BEGINDECLARE@pos1INT,@pos2INTSET@Order=REPLACE(REPLACE(@Order,'asc','ASC'),'desc','DESC')IFCHARINDEX('DESC',@Order)>0IFCHA

6、RINDEX('ASC',@Order)>0BEGINIFCHARINDEX('DESC',@Order)='ENDELSESET@Operator='<='ELSESET@Operator='>='SET@SortColumn=REPLACE(REPLACE(REPLACE(@Order,'ASC',''),'DESC',''),'','')SET@pos1=CHARINDEX(',',@SortColumn)IF@pos1>0SET@SortColumn=SUBSTRIN

7、G(@SortColumn,1,@pos1-1)SET@pos2=CHARINDEX('.',@SortColumn)IF@pos2>0BEGINSET@SortTable=SUBSTRING(@SortColumn,1,@pos2-1)IF@pos1>0SET@SortName=SUBSTRING(@SortColumn,@pos2+1,@pos1-@pos2-1)ELSESET@SortNam

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。