多条件分页查询优化的设计方法第36卷Vo1.36第2期No.2计算机工程ComputerEngineering2010年1月January2010?软件技术与数据库?t1000---3428(2010)02--0051--02文献标识码tA中田分类号.TP311多条件分页查询优化的设计方法李辉,王墙波(北京化工大学信息科学与技术学院,北京100029)摘要:随着数据量的不断增加,数据库的分页查询效率成为提高数据库访问性能的重要问题.从分析影响分页查询速度的关键因素入手,结合优化器中SQL语句的优化原理和分页算法,通过理论推导和实验结果的分析,提出分页查询优化的设计方法.将该方法应用于实际系统的分页框架中,取得了较好的效果.关健词:优化器;查询优化;分页框架DesignMethodsofMulti?conditionPagingQueryOptimizationLIHui.WANGRui-bo(CollegeofInformationScienceandTechnology,Bei激ngUniversityofChemicalTechnology,Bei激ng100029)[Abstract]Withtheincreasingamountofdata,pagingqueryefficiencyofdatabasebecomesanimportantissuetoimprovetheaccessperformanceofdatabase.Thispaperbeginswiththeanalysisofkeyfactorswhichimpactthespeedofpagingquery,combiningwiththeoptimizationtheoryofSQLstatementintheoptimizeddeviceandpagingalgorithms,andthroughtheanalysisoftheoreticalinfersandexperimentalresults,topointoutdesignmethodsofpagingqueryoptimization.Itachievesgoodresultstoimplythemethodsintopagingframeworkofactualsystems.[Keywords]optimizer;queryoptimization;pagingframework数据库查询是数据库的核心操作.在查询中,查询优化是利用查询优化器对SQL语句进行优化,并使SQL执行代价最小….文献【2】从SQL角度,阐述SQL查询语句高效执行方法.文献【3】介绍查询表达式优化的一般过程,在查询重写阶段提出一种面向对象的框架,设计并实现了"多字段间关系自动推理"等若干种优化方法.上述方法在优化查询语句上起很大作用.随着关系数据库在B/S体系结构上的广泛应用,庞大的数据很难在一页显示,为了进一步提高数据量达到千万条以上的分页查询速度,寻找高效率分页方法是十分必要的.1分页查询优化方法数据库分页查询处理的开销通常取决于2个方面:一是磁盘读写的I/O次数;二是CPU的处理时间.1.1减少蠢盘读写的I/O次数的方法数据的查询处理的代价通常取决于对磁盘的访问,因为磁盘比内存的访问速度慢.因此,应该尽量减少对I/O设备的访问或者提高I/O设备访问的并发率.提高数据库系统效率的有效方法是建立聚焦索引.聚焦索引的建立,使得关系中数据的逻辑顺序和在磁盘上的物理存储顺序数据相邻排列,使得SQL语句在检索时,只检索索引项有效范围内的数据,而对于超出索引项值的数据SQL语句将不再访问,这样就减少了数据的访问量及访问次数,提高了查询效率O对于执行一个形式为(r)的选择操作,如果在关系attr上无索引,除了扫描整个关系r之外可能没有其他的选择,假定关系r占据的磁盘页数为F,那么这个过程需要F次传输.然而,如果在attr上建立聚焦索引,那么可以通过二分搜索找到关系r中满足attr=value的第1个元组所在的页;然后向着恰当的方向扫描即可获得满足attropvalue的元组,这样一次二分搜索的开销约为lbF.如果关系r占据500页,则搜索开销为[1b500],也就是9次传输,而无索引的情况则需要500次,大大减小了I/O次数.1.2碱少CPU的处理时间的方法减少计算机系统需要计算的数据,使CPU的代价降到最低,对于查询分页效率来讲,主要表现在2个方面:一是减少SQL的执行代价,因为SQL语句的一个特点是同一个查询对象,不同SQL语言在实现方式之间的执行效率上的差异,需要分析优化器的工作原理,选取最有效的SQL语句J.二是寻找查询效率最高的分页方法.1.2.1多条件组合查询的SQL优化算法在所开发的项目中常常需要对输入条件进行动态组合查询,如果输入A1,A22个查询条件,其中有A1,A2,A1A2和无条件输入共4种组合(2个).假设输入条件为Ⅳ个,每一个条件取2个值,对输入数据的查询按"1"处理,不输入数据的查询条件按"0"处理,按照乘法原理其组合结果为2,若程序中对每一个结果判断一次,当输入10个查询条件时,判断语句达到2个,程序的代码量非常庞大且效率很低.改进的优化算法具体实施如...