靠UI分页只是一部分
如果一个查询的结果数据量巨大,就需要数据查询的时候就分页,每次只返回其中一页
第一种方法:
思路是根据页号取出两部分数据,比如取出前90条,然后取出前100条,然后比较取出两次结果的差集。
在30万条记录的情况下,如果只分100页(结果有10000条记录),大约需要1分半钟。索引建得好的话,1分钟左右。
//select
* from //这一句是不能修改的了,因为它是从结果中读取,所以必须要用*
//(select top @h_count (@filedlist)
from @tableName .....) as big //取出符合条件的上限的记录
//where
//big.guid
//这里是关键,根据主键从下限结果中过滤掉重复的记录(只留下不同的数据,也就是求交集)
//not in
//(select top
@l_count guid from @table .....)//下限
//order @orderby
//原来的格式,这里只保留了orderby之后的,应该保留条件之后所有的,包括gruopby什么的
函数类似如此:
public
string MakeSqlPager(string sourceSql,int pageIndex)
{
//使用默认页面大小
string
orderbyStr=sourceSql.Substring(sourceSql.ToLower().IndexOf("order by"));
int index=sourceSql.ToLower().IndexOf("select");
string bigRes="("+
sourceSql.Insert(index+6," top "+((pageIndex+1)*_pageSize).ToString()+" ")+") as
big";
string smallRes="("+ sourceSql.Insert(index+6," top
"+(pageIndex*_pageSize).ToString()+" ")+")";
return "select * from
"+bigRes+" where big.guid not in "+smallRes+" "+orderbyStr;
}
这种方法还可以改进,就是第二次取过滤时从第一个的结果里面过滤。
第二种方法:
掐头去尾,程序还没写
SELECT
* FROM
(
SELECT TOP 100 * FROM
(
SELECT TOP 100000 * FROM
pagetest ORDER BY regt ASC
) as a
ORDER BY regt desc
) as b
ORDER
BY regt
ASC
测试了一下,大约用时间29秒。
比较:
第一种方法的效率很低,猜测是因为多次需要循环比较,时间复杂度要高一个等级。比如,这种方法的响应时间和所取得的页号有很大关系。
第二种方法还是可以接受的,和页号无关,但是也需要两次比较
网上还有使用比较ID的方法的,但是不是所有的表都有ID,即使有,也不一定是int类型的。
还有用存储过程创建临时表的,我还没有测试效率如何
sqlserver里面没有rownum
这个功能(最新的2005beta2版本据说有了,Oracle里面有),所以一次比较就能分页的算法还真不好写
分享到:
相关推荐
总的来说,利用SQL Server的存储过程进行千万级数据分页查询,结合合理的索引策略和优化技巧,能够有效提升查询性能,降低系统负载,为用户提供流畅的浏览体验。请参考“分页.txt”和“使用方法.txt”文件,了解更多...
String url = "jdbc:sqlserver://localhost:1433;databaseName=myDatabase"; String username = "myUsername"; String password = "myPassword"; try { Class.forName(...
关于SQL Server SQL语句查询分页数据的解决方案 在日常工作中,我们经常需要处理大量数据,并从中获取特定页面的数据。特别是在Web应用开发中,为了提高用户体验,通常会将数据进行分页显示。针对这一需求,本文将...
综上,ASP.NET结合SQL Server的分页技术是构建高效数据展示的重要手段。开发者需要理解分页原理,掌握如何在ASP.NET中使用分页控件,以及如何优化SQL Server的分页查询,以提供流畅的用户体验。在实际项目中,根据...
在SQL Server 2005中,分页查询是一个常见的需求,特别是在处理大量数据时,为了提高用户体验,通常需要一次性加载一定数量的数据,而不是一次性显示所有数据。以下将详细讲解SQL Server 2005中分页查询的常用方法。...
本文将深入探讨如何使用SQL Server中的`TOP`语句来实现高效的数据分页,同时结合JDBC和Servlet技术进行数据的后台处理和前端展示。 首先,`TOP`语句是SQL Server中的一个非常实用的子句,用于在查询结果集中返回...
综上所述,`Hibernate+sqlserver2000分页`是一个结合了ORM框架和数据库分页策略的技术主题。在实际应用中,开发者需要根据业务需求选择合适的分页方法,并注意性能优化,如避免全表扫描,使用索引来加速查询等。理解...
本资源"SQLServer分页.rar"包含了一个名为"SQL分页.txt"的文件,里面详细讲解了SQL Server中的分页实现方法。 首先,我们来理解SQL Server分页的基本概念。分页通常涉及到两个关键参数:`OFFSET`和`FETCH NEXT`。`...
根据给定的SQL Server存储过程...总之,SQL Server的`GROUP BY`分组查询、存储过程和分页技术都是数据库管理和数据分析中不可或缺的工具。正确理解和灵活运用这些技术,可以极大地提升数据库应用程序的性能和用户体验。
### 海量数据分页在SQL Server中的实现与优化 #### 概述 在Web应用程序开发中,分页浏览是一项非常重要的功能。特别是在处理大量数据时,如何高效地实现分页变得尤为关键。传统的ADO记录集分页法因其内存占用高、...
在SQL Server数据库中,分页是一种常见的数据检索技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这在处理大型数据集时尤其有用,可以提高性能,减少网络传输,以及提供更好的用户体验...
本教程将详细讲解如何在Java中实现不分框架的分页查询,同时涵盖对MySQL和SQL Server数据库的支持。 一、基础知识 1. 分页概念:分页是将大量数据按一定数量分成若干部分,每次只加载一部分到内存中显示,用户可以...
在SQL Server中,实现分页查询是数据库应用中常见的需求,尤其在大数据量的展示时,分页可以提高用户体验并优化服务器性能。本教程将详细讲解如何在前端使用Java(假设Test.jsp为JSP页面)和后端使用SQL Server语句...
SQLserver 分页数据样例 只是一个分页数据 查询 比较适合小白
总的来说,通过SQL Server和.NET的DATAGRIDVIEW控件实现数据分页显示是一项基础但关键的技能,它涉及到数据库查询优化、用户界面设计以及事件驱动编程等多个方面的知识。理解并掌握这些内容,对于提升你的软件开发...
这个"SSH框架+SQLServer实现分页的小项目"提供了一个基础的分页实现示例,适合初学者了解SSH框架如何与数据库交互,以及如何在Java Web应用中实现分页功能。通过研究这个项目,开发者可以学习到SSH框架的整合、...
在SQL Server中,分页技术是一项关键功能,尤其在处理大量数据时,它能有效地提高查询性能并优化用户体验。在Web应用中,分页通常用于显示数据库中的数据列表,避免一次性加载所有数据导致的性能问题。以下是几种...
### SQL Server 数据库分页查询方法详解 #### 一、背景与问题定义 在实际的数据库操作中,分页查询是非常常见的需求之一。对于大型数据集来说,一次加载所有数据到前端显示是不现实的,这不仅会增加服务器负担,还...
SQL Server作为微软推出的一款关系型数据库管理系统,在处理复杂查询、数据分页等方面提供了丰富的功能和优化策略。本文将深入探讨SQL Server中的分页查询技术,帮助读者掌握如何高效地进行数据分页,以提升应用程序...