浅析关系数据库的查询优化
2017-09-09杨秀荣
杨秀荣
摘要:基于查询优化为数据库管理系统规划与任务完成所应用的一项关键技术,并且直接关系数据库实用功能这一实况,提出了科学应用各类数据库查询优化技术的建议。本文在对数据库查询优化目标,以及其涉及的各类因素进行概述的基础上,对各种查询优化技术应用要点进行探究。
关键词:数据库;查询优化;索引;查询技术
中图分类号:TP311.13 文献标识码:A 文章编号:1007-9416(2017)07-0225-01
在关系数据库中,查询为基础型、常用型的操作。数据库的查询多数以查询语句呈现出来,查询效率为检测数据库系统功能的重要标杆之一。数据库管理系统自带查询与更新方法的功能,致使关系数据库回应时间缓慢的问题衍生出来,所以积极对查询优化问题进行探究是极为必要的。本文做出如下论述内容。
1 查询优化的目标
对查询代价有整体性认识是基础。查询代价实质上就是指处理查询环节中花费的时间,大体上涵盖了以下几个成分:一是访问辅助存储器的代价(I/0代价),数据库通常以物理块为单位从磁盘中获得,每个物理块通常涵盖多条录入信息;二是计算代价(CPU代价);三若是分布式数据库,其内还涵盖通信代价。
I/0代价和CPU代价是处理任何类型查询一定要付出的代价。基于CPU的速度比磁盘读写更快捷这一实况,所以I/0代价通常是DBMS功能发挥的障碍点。故此编制出I/0代价最少的规划,并把控好CPU时间与I/0时间的均衡性,为高效查询设计的重要目标。实质上就是期待规划出有效利用索引、磁盘读写最小、最高效地利用了内存CPU资源的系统。
2 与数据库查询优化相关的因素
(1)文件组织。常见的有流水文件、顺序文件、索引文件与HASH文件等,它是数据库的物理基础,对数据库功能产生直接影响,在等值查询方面,散列文件所取得的效果优于索引文件与顺序文件。(2)存储介质。存储介质影响各类文件组织模式。在存取速度上,随机存储好于半随机存储与顺序存储[1]。(3)查询策略。通常被划分为两种类型,即代数优化与非代数优化,将索引、排序整合进优化措施中,可以达到提升查询效率的目标。(4)查询算法。不同的位图配置、不同的查询措施、不同的组织文件所应用的查询算法均存在差异性。例如线性搜索算法通常应用对象为向量结构的顺序文件,通常是在磁带(顺序存储介质)上的存储模式。
3 优化用户查询规划的方案
3.1 合理使用索引
索引为数据库中一个应用频率较高的数据库对象,优化查询的主要方法为构建索引,索引也是数据库一并把事先分类好的数据整合进多类表格的有效方法。在关系数据库的表上科学合理的构建索引,在提升数据库数据查询速度,优化数据库功能方面体现巨大价值。,每一类索引的应用均以磁盘容量为媒介(除了集簇索引之外)。当应用一个索引时,数据库引擎务必要同时读取两类数据信息,这两类数据读取为数据库必须录入的信息,第一类数据被读取至现实数据指针的索引上,第二类数据被读入至指针特定的方位上。故此,创设的索引时务必能够和现实应用系统的查询需要有效整合在一起,借此途径实现优化查询的目标。
在关系数据库中,索引应科学应用,遵照如下规则:①在频道开展连接,却没有设定是外键的列上构建索引,那些不时连接的字段借助优化器会自动产生索引;②在主键索引层面上,主键数目低于列的25%,这样普通列数目才会得到保障,索引空间被高效利用;③在条件表达式内那些频频应用不同值的列上构建检索,不同值应用较少的列上无需构建索引;④在经常开展排序或分组(即进行group by或order by操作)的位置上构建索引;⑤在作为最小值等聚集函数上可以构建索引。 对于索引而言,无论是构建、维护与执行环节上均会使关系数据库出现代偿行为、所以科学应用索引是极为必要的。错误的索引不但不会优化数据库性能,还会使一些负面影响产出。
例如对于聚簇索引而言,其内索引存储值的次序要与表内数据的物理存储次序完全吻合.构建聚簇索引时,系统会自动对表的物理数据页中的数据信息参照列数要求进行排序,继而再将其存储至磁盘内,也就是说聚簇索引和数据是共同体,其叶节点内存储的是现实数据.因为聚簇索引规定了表内数据的物理次序,所以每张表只允许有一个聚簇索引,一般情况下应用主键去实现构建的目标.聚簇索引通常适用于以下几类查询模式:值在某一范畴中的查询、返回大量结果的查询、使用join句的查询、运用了group by或order by子句的查询。
3.2 简化或避免排序
应当简化或规避对大规模列表多次排序得操作行为。若能够应用索引自行生成输出时,优化器就不必进行排序这一程序。但是如果索引内不存在一个或多个等待排序的列,group by或order by子句内列的次序和索引的次序存在差异,并且排序的来源表存在差异之时,就应进行列排序。為了达到规避不必要排序这一行为方式,增设索引是极为有效的办法,进而科学的整合数据库表,虽然有时候会影响列表的美观性,但是能使效率大幅度提升。若排序操作务必进行,那么就积极探寻简化措施,例如减缩排序列的范畴等。
3.3 科学应用临时表
对关系数据库中表的一个子集进行排序并构建临时表,在提升查询速度方面体现一定的实用价值[2]。科学应用临时表能够降低多重排序操作行为出现的概率,并且从某种角度分析还能够简化优化器工作模式。临时表内的行数低于主表内的行数,并且物理顺序即为所规定的顺序,压缩了磁盘I/O,故此查询工作量也相应降低。
3.4 避免使用字符匹配查询
谓词LIKE具有字符串匹配的功能,但是配置工作的开展会耗用大量的人力资源与时间。比如:
SELECT*FROM student WHERE xhLIKE“05%"
即便是于xh字段上构建索引,但是在这种局势中必须应用顺序扫描模式,并且也要规避非开始的子串。比如:SELECT*FROM student WHERE xmLIKE“二洋%”
因为在where子句中应用了非开始子串的缘故,所以这一语句不会应用索引。
3.5 用排序来取代非顺序存取
磁盘的非顺序存取是最缓慢的操作行为,具体体现在磁盘存取臂反复移动方面上。因为SQL语句中潜藏上述这一状况,所以导致用户在编写应用流程环节中,极易写出存取大量非顺序页的查询程序。故此,为了处理上述问题,经常会应用数据库的排序能力去取代数据的非顺序存取能力,达到优化查询质量的目标。
4 结语
本文对影响关系数据库查阅优化的几种因素,同时阐述了关系数据库系统的查询优化程序与措施。在数据库技术不断翻新时代中,掌握关系数据库查询优化技术,编写可行的查询规划,可以使数据库应用系统功能大幅度提升,协助人能提高工作效率。
参考文献
[1]伍应树,赵志刚,李宪明.关系数据库基于索引查询的优化设计研究[J].电脑编程技巧与维护,2016,17:56-58+79.
[2]孙伟.试析关系数据库中关键词查询结果动态优化[J].数字技术与应用,2016,09:228+231.endprint