基于数据库查询过程优化设计
蔡鹏 河南信息统计职业学院 450008
【文章摘要】
日常生活中对于一些大型的关系数据库在平时的查询操作中往往会比较的频繁,而这种频繁的操作往往又会影响数据库的应用程序, 所以对于查询操作系统也有很高的要求。本文为了提高操作系统的查询效率提升数据库的执行效率,笔者通过对数据库的查询执行过程进行讨论,分析其中执行原理,提出了具体优化的方案,实现了快捷有效的数据库操作目的,极大的完善了数据库的性能。
【关键词】
关系数据库;查询优化;索引
0 引言
目前,随着网络信息技术的不断进步,数据库作为信息管理系统的后台,其不仅被广泛的应用到各个企业管理当中, 负责着各类信息的处理并储存,而且还极大的提高了企业对于信息的利用,提高了企业的管理水平。但是在日常管理当中数据库对于信息的管理绝大部分表现在查询上面,而这种频繁的查询进而就会导致数据库的运行速率降低,进而影响管理。
1 数据库的查询处理过程
在数据库中其查询的处理过程一般分为以下几个:
1.1 语言分析和翻译处理
数据库在查询处理之前,查询系统会在扩展代数上把所要查询的东西翻译成能被系统识别的语言,在翻译的过程中其实是一个编译器的语法翻译过程,因此在这一过程中不仅完成了检测查询语法是否正确,而且还把查询语言经过逻辑分析形成了一种可用的关系表达式,为下一步的处理打下了基础。
1.2 查询优化处理
在这个过程主要是由优化器进行处理,其一方面不仅对语言分析翻译处理过程中的关系表达式进行了优化,进而整合成了具有执行效率较高的关系表达式。另一方面在此过程还对语句的查询处理进行了进一步的优化选择,使得在整个查询过程中变的简便。
在整个过程中查询优化处理是最为关键的,其优化的效果如何直接影响到了执行效率。因此,为了使得查询能够快速准确的进行,数据库系统必须采用语法优化、启发式优化、基于成本优化乃至是语义优化等技术来丰富数据库的优化器,进而使得查询最优化。
1.3 执行
执行是整个查询过程中的最后一步, 其通过数据库的处理将优化器选择的执行命令进行执行,进而筛选出数据库中所要的信息。
2 影响数据库查询效率的原因
2.1 硬件性能方面
硬件的性能方面主要是指数据库的服务器性能,因为数据库查询系统是在一台或者是多台主机的共同协助下进行工作的,而这些设备由于不能经常性的更换,外加网络信息不断更新,企业业务不断增加,进而导致了服务器不能与之相适应,从而影响了数据库的查询效率。
2.2 查询方案方面
在现代的数据库的查询系统中主要是以代数关系式为基础理论,用SQL 语言进行数据库的编写处理。而在发展迅速的今天,很多用户在编写SQL 语句时,也在DBMS 编译的基础上结合了索引等数据库对象来对查询执行SQL 语句,不仅实现了用户对于数据库的信息查询操作,而且在这种高效率的查询方案将查询的速率提升了10 倍以上,尤其是在海量数据的查询当中这种效果更为明显 ,但是在实际编写当中,有许多程序员以及数据库的操作员却并没有认清楚这一点,普遍的认为只要用SQL 语句进行编写就能实现数据库的查询功能。
3 数据库优化查询的方案
3.1 硬件设施的优化
想要提高数据库的查询效率,强化服务器的工作效率是非常重要的。因此,对于服务器的优化应该从内存、配置、硬盘等方面入手,以此来提升服务器的工作效率,进而提高数据库的查询效率。其一,内存方面,内存对于数据库的服务器性能来讲是一个非常重要的影响因素。因为在查询过程中访问内存当中的数据一般要比访问磁盘数据要快,而内存的大小则直接影响了查询的访问速率,所以在内存方面可以加大内存或者是把数据另存在内存缓冲区,以此来减少磁盘的访问,提高查询效率。其二,配置方面,企业的业务在扩大信息技术也在更新,而对于企业服务器的配置也应该随着发生变化,因此在配置方面可以采用多处理器的方法,对不同的信息进行分类处理,进而减少单个服务器处理的负荷,提高查询的效率。另外还可以采用更换高效硬盘的方式,以此来提高硬盘的运行速率减少查询的等待时间,进而提高数据库的工作效率。
3.2 查询方案优化
所谓的将大表分成多个小的子表是指将数据量非常大的表将其平均分成若干个数据量较为少的子表,然后用户在对这些子表进行分别查询,最终将所查询的结果有序的组合在一块,从而来获取所要的查询信息。由于在查询中大表的数据非常庞大操作起来比较的繁杂,而将大表水平分割成若干个子表,就可以实现将子表单独放置在不同逻辑的设备上或是放在独立磁盘驱动器上,从而实现快速有效的查询。
在数据库系统中查询嵌套层数越多, 其查询的效率也会成几何级下降。要想提高数据库查询的效率,那么首先就得提高嵌套查询的执行效率,减少嵌套的层数,只有这样才能更有效的提高数据库的查询效率。下面就以一个具体的例子来说明嵌套层数的减少可以有效的提高查询的效率。
例如:已知学生成绩表为Cj,在其中查询满足四个分数段 [Score11,Score12]、[Score21,Score22] 的学生记录,其嵌套查询语句表示为:SELECT Student_Id FROM Cj WHERE Cj.Scroe >=Score11AND Cj .Score<=Score12 AND Student_Id IN (SELECT Student_Id FROM Cj WHERE Cj.Score>=Score21AND Cj.Score<=Score22);
从这个查询表达式中可以看出,如果在每一层的查询中所要查询的语句是1000 行,那么其所需要查询的量就能达到106 行,以此可以看出如果在对更大的数据进行查询时期执行的效率肯定会非常的低下。而通过减少嵌套查询层数的方法就可以使得查询变得简洁,进而提高查询的效率。
4 结束语
综上所述,提升数据库的工作效率除了通过提升数据库系统的服务器性能以及通过将大表水平分成若干个子表、减少查询语句的嵌套层数等方法外;还可以利用外部SQL 重写器,对所要查询的SQL 语言进行重写,使得重写过后的SQL 语句能够替代原程序中的SQL 语句,使得在运行的过程中能够产生性能更好的命令,进而提高查询的效率。
【参考文献】
[1] 魏琦. 关系数据库查询优化策略研究[A]. 人工智能及识别技术.2010,(31):8845—8846
[2] 李俊民. 精通SQL- 结构化查询语言详解[M]. 北京: 人民邮电出版社.2009,(8):156
[3] 许新华. 并行数据库查询优化技术的最新进展[A].2009, (16):3814—3816
【作者简介】