千万级数据设计如题 谢谢了
是用数据库+XML文件存储数据好呢呢还是单单使用数据库好呢?!数据需要关键字搜索如果是单独的数据库怎么做搜索?!如果是数据库+XML该怎么设计搜索?!问题补充:数据库用M...
是用数据库+XML文件存储数据好呢呢 还是单单使用数据库好呢?! 数据需要关键字搜索 如果是单独的数据库怎么做搜索?! 如果是数据库+XML该怎么设计搜索? ! 问题补充:数据库用MYSQL 操作系统:freebsd 如果是用数据库咋个做关键字搜索系统?!~字段比较大!~不使用like检索 怎样才能高效的检索
展开
2个回答
展开全部
1. 引言1.1目的为适应大数据量分页的需要,为以后千万级数据分页提供解决方法或者参考,节省开发时间,特制定本详细设计方案1.2主要阅读对象脚本设计人员1.3参考资料 http://www.cnblogs.com/SGSoft/archive/2004/10/23/55800.html 2. 详细设计2.1分页存储过程2.1.1简介2.1.2分页存储过程代码以下代码是网上找的分页存储过程,我是在原存储过程的基础上加了一个@IsCount bit = 0, 主要是用来返回纪录总数,当为非0值时返回。下面注释部分是原作者的测试部分。我在本机sql server 2005上的测试是在10000011纪录中查询第100000页,每页10条纪录按升序和降序时间均为0.38秒,测试语法如下:exec GetRecordFromPage tbl_Briefness,I_BriefnessID,10,100000,其中在tbl_Briefness表I_BriefnessID字段上建立了索引。 /* 经测试,在14483461 条记录中查询第100000 页,每页10 条记录按升序和降序第一次时间均为0.47 秒,第二次时间均为0.43 秒,测试语法如下: exec GetRecordFromPage news,newsid,10,100000 news 为表名, newsid 为关键字段, 使用时请先对newsid 建立索引。 函数名称: GetRecordFromPage 函数功能: 获取指定页的数据 参数说明: @tblName 包含数据的表名 @fldName 关键字段名 @PageSize 每页记录数 @PageIndex 要获取的页码 @OrderType 排序类型, 0 - 升序, 1 - 降序 @strWhere 查询条件(注意: 不要加where) 创建时间: 2004-07-04 修改时间: 2008-02-13*/Alter PROCEDURE [dbo].[GetRecordFromPage] @tblName varchar(255), -- 表名 @fldName varchar(255), -- 字段名 @PageSize int = 10, -- 页尺寸 @PageIndex int = 1, -- 页码 @OrderType bit = 0, -- 设置排序类型, 非0 值则降序 @IsCount bit = 0, -- 返回记录总数, 非0 值则返回 @strWhere varchar(2000) = '' -- 查询条件(注意: 不要加where) AS declare @strSQL varchar(6000) -- 主语句declare @strTmp varchar(1000) -- 临时变量declare @strOrder varchar(500) -- 排序类型 if @OrderType != 0begin set @strTmp = '<(select min' set @strOrder = ' order by [' + @fldName + '] desc'endelsebegin set @strTmp = '>(select max' set @strOrder = ' order by [' + @fldName +'] asc'end set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' + @strOrder if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder if @PageIndex = 1begin set @strTmp = '' if @strWhere != '' set @strTmp = ' where (' + @strWhere + ')' set @strSQL = 'select top ' + str(@PageSize) + ' * from [' + @tblName + ']' + @strTmp + ' ' + @strOrderendif @IsCount != 0 set @strSQL = 'select count(' + @fldName + ') as Total from [' + @tblName + ']' exec (@strSQL)2.2千万级数据分页实现2.2.1简介这次分页我是用Gridview来实现的,测试时间没算,但基本上从10000011纪录中一次查询25条纪录,在10万页以内,时间花费 在1秒以内,10万页以上也不超过2秒。使用其他控件比如DataGrid,DataList或者DataReapter应该花费的时间更短。2.2.2适用对象服务器端控件Gridview,DataGrid,DataList,DataReapter等数据绑定控件2.2.3分页实现
记得采纳啊
记得采纳啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询