应用存储过程实现数据分页①.PDF
文本预览下载声明
计 算 机 系 统 应 用 2012 年 第 21 卷 第 12 期
186 经验交流 Experiences Exchange
应用存储过程实现数据分页①
黄龙军
(绍兴文理学院 计算机系, 绍兴 312000)
摘 要: 讨论了在数据库服务器端应用存储过程的方法来实现海量数据的分页, 重点讨论分页存储过程的设计
思想、实现方法以及在通过 ADO.NET 命令对象调用存储过程的方法. 通过该方法, 减少了海量数据查询时的网
络流量, 提高了系统的效率.
关键词: 海量数据; 分页; 存储过程; ADO.NET; SQL
Implementation of Data Paging with Stored Procedure
HUANG Long-Jun
(Department of Computer Science, Shaoxing University, Shaoxing 312000, China)
Abstract: This paper describes the paging of massive data with stored procedures in the database server, focuses on the
design ideas and implementation methods of stored procedures for data paging, and their calls by ADO.NET command
object. The method greatly reduces the network traffic when the massive data queries, and improves the efficiency of the
system.
Key words: massive data; paging; stored procedure; ADO.NET; SQL
1 引言
Web 系统经常会遇到大量数据的分页显示问题,
传统的分页技术在提取数据时用户等待时间较长[1].
分页技术是指Web 网站针对用户的大批量数据进行查
询请求时, 将用户所需数据分批取出, 传送至客户端
浏览器的技术[1]. 分页的目的可减少网络的流量和用
户端的负荷, 让用户有更好的使用体会. 文献 1 从
Ajax 技术的角度, 讨论 Ajax 技术采用异步通信方式,
只更新所需数据的方法来提高系统性能, 但采用的编
程方法是直接在功能代码中嵌入 SQL, 存在安全性不
高、网络流量较大、查询效率不够高等方面的问题.
Visual Studio 2010 中的 GridView控件实现分页效果的
方法很简单, 选择 “启用分页”并设置相应属性即可.
但这种实现方法在每次查询当前页的数据时都要到服
务器端取得所有数据, 然后再显示那一页的数据, 存
在网络流量大的问题, 特别是在海量数据的访问中,
查询速度慢, 系统效率低. 本文采用直接在数据库服
① 收稿时间:2012-05-14;收到修改稿时间:2012-06-10
务器端使用存储过程的方法来实现分页效果, 客户端
只要传递参储过程名及少量参数即可在服务器端获取
其所需的数据, 能有效的提高系统的查询性能.
2 相关知识
存储过程是可以一次执行的 SQL 代码块, 作为一
个单元存储在服务器端[2], 并在服务器端执行. 存储
过程具有模块化程序设计、提高执行效率、减少网络
流量、提供安全机制等优点[3], 这正是我们采用存储过
程来实现数据分页的原因. 下面我们对在存储过程中
使用的 SQL 的相关知识[3]进行说明, 以便读者能更好
地理解后面讨论的存储过程.
使用 SELECT…INTO 表名可以自动创建一个
新表, 并将查询结果行插入到该表中. 使用 INTO子句
生成(临时)结果表, 可以达到缓存数据的目的.
ROW_NUMBER( )函数返回结果集分区内行的序
列号(bigint 类型), 每个分区的第一行从 1 开始.
2012 年 第 21 卷 第 12 期 计 算 机 系 统 应 用
Experiences Exchange 经验交流 187
RANK( )、DENSE_RANK ( )、NTILE(行数)等函数
也可以达到类似的效果.
SET NOCOUNT 设置为 ON, 可以阻止在结果集
中返回受 Tr
显示全部