日期:2014-05-16  浏览次数:20403 次

海量数据库的查询优化及分页算法方案(转帖)

随着“金盾工程”建设的逐步深入和公安信息化的高速发展,公安计算机应用系统被广泛应用在各警种、各部门。与此同时,应用系统体系的核心、系统数据的存放地――数据库也随着实际应用而急剧膨胀,一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量。那么,如何实现快速地从这些超大容量的数据库中提取数据(查询)、分析、统计以及提取数据后进行数据分页已成为各地系统管理员和数据库管理员亟待解决的难题。

?

在以下的文章中,我将以“办公自动化”系统为例,探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页。以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构:

?

CREATE TABLE [dbo].[TGongwen] (????--TGongwen是红头文件表名

???[Gid] [int] IDENTITY (1, 1) NOT NULL ,
--
本表的id号,也是主键

???[title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,??
--
红头文件的标题

???[fariqi] [datetime] NULL ,
--
发布日期

???[neibuYonghu] [varchar] (70) COLLATE Chinese_PRC_CI_AS NULL ,
--
发布用户

???[reader] [varchar] (900) COLLATE Chinese_PRC_CI_AS NULL ,

--需要浏览的用户。每个用户中间用分隔符“,”分开

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

下面,我们来往数据库中添加1000万条数据:

declare @i int

set @i=1

while @i<=250000