基于Web的研究生学位信息管理系统开发关键技术(4)

2012-08-28 21:59

    事实上,在查询和提取超大容量的数据集时,影响数据库响应时间的最大因素不是数据查找,而是物理的I/0操作。例如我们取出学科名为计算机应用技术的前十名学生信息: select top 10 * from ( select top 10000 Xh,Xm,Hsxwrq from XueWeiXinXi where Xkm='计算机应用技术' order by Xh desc) as a order by Xh asc 从理论上讲,整条查询语句的执行时间应该比子句的执行时间长,但事实相反。因为,子句执行后返回的是10000条记录,而整条语句仅返回10条语句,所以影响数据库响应时间最大的因素是物理I/O操作。而限制物理I/O操作此处的最有效方法之一就是使用TOP关键词了。TOP关键词是SQL SERVER中经过系统优化过的一个用来提取前几条或前几个百分比数据的词。由于使用Top执行查询操作的效率很高。因此我们可以考虑使用Top关键词来进行分页查找,由此可以得到如下分页算法:    SELECT TOP 页大小 * FROM Table WHERE (ID NOT IN     (SELECT TOP 页大小*页数 id  FROM 表  ORDER BY id)) ORDER BY ID 和游标存储过程比起来,该存储过程在速度上有了很大的提高,而且每次查询只需要取出当前页面所需的数据,不需要加载整个数据源,是一个非常优秀的分页存储过程。但是在该存储过程中,使用了NOT IN关键字进行数据读取。SQL中的关键词in不符合SARG, SARG是用于限制搜索的一个操作,它通常是指一个特定的匹配,一个值的范围内的匹配或者两个以上条件的AND连接。形式如下:     列名 操作符 <常数 或 变量>  或 <常数 或 变量> 操作符列名     如果一个表达式不能满足SARG的形式,那它就无法限制搜索的范围了,也就是SQL SERVER必须对每一行都判断它是否满足WHERE子句中的所有条件。因此在该分页存储过程中,not in操作会扫描全表,因此在执行速度上依然不是很理想。     分页优化的最终目的就是避免产生过大的记录集,使用TOP 可实现对数据量的控制,因此在分页算法中,影响查询速度的关键因素有两点:TOP和NOT IN。TOP可以提高查询速度,而not in会减慢查询速度,所以要提高整个分页算法的速度,就要使用其他方法替换not in。SQL中可以通过max(字段)或min(字段)来提取某个字段中的最大或最小值,所以如果某个字段值不重复,那么就可以利用这些不重复字段的max或min值作为分页算法中分页的参照物。因此我们可以用操作符“>”或“<”使查询语句符合SARG形式,于是可以得出如下分页方案:     SELECT TOP 页大小 FROM Table
    WHERE (ID >  (SELECT MAX(id) FROM
    (SELECT TOP  ((页码-1)*页大小) id  FROM Table ORDER BY id) AS T)) ORDER BY ID 其中ID是数据库表的主键。如果加上索引,查询效率会有很大的提高。     表1列出了对有着10万以上数据的学位历史表,在以SID(SID是主键,但并不是聚集索引)为排序列,提取Xh,Xm,Hsxwrq字段,分别以第1、10、100、1000、1万页为例,测试以上两种分页方案的执行速度:(单位:毫秒) 表1  两种分页方案执行速度对比   1 10 100 1000 1万 方案一 30 16 720 470 4500 方案二 76 63 130 250 140     从表1中,我们可以看出,两种存储过程在执行1000页以下的分页命令时,都是可以信任的,速度都很好。但第一种方案在执行分页1万页以上后速度开始降了下来,而第二种方案却始终没有大的变化,在大数据量的情况下,特别是在查询最后几页的时候,查询时间一般不会超过9秒,非常适用于大容量数据库的查询。

基于Web的研究生学位信息管理系统开发关键技术(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数字移动多媒体案例分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: