下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关系数据库查询优化的实现途径及方法
一、关系数据库查询优化在数据库应用程序系统中,调查操作的比例最高,其优点直接影响应用程序系统的性能。在本文中,我们介绍了基于关系数据库调查现状的关系数据库调查优化的基本原则,并总结了关系数据库调查优化的各种方法和方法。二、数据库系统性能低下随着计算机应用的不断深入和数据库技术的不断发展,几乎所有的应用程序都要和数据库打交道,目前,绝大多数的数据库应用软件都是基于关系数据库系统。通过查询数据库可以很容易地获得想要的数据。但是,现实中数据库系统只重视用户界面的华丽,而对于查询语句的效率并不重视,导致应用系统中某些查询耗时长,响应速度慢,甚至查询结果不够准确,系统性能极为低下,资源浪费严重。因此对查询操作进行优化处理十分必要。三、投影数据处理对关系数据库查询优化应遵行以下基本原则:1选择运算应尽可能先做,以得到较小的中间结果;2在执行连接前对关系适当地预处理;3把投影运算和选择运算同时进行,减少分开操作造成多次扫描文件;4把投影同其相邻的双目运算结合起来;5把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算,减少时间和空间的开销;6按照小关系运算优化处理的原则,减少中间结果;8找出公共子表达式,预先计算并保存起来.以免重复计算从而节省操作时间。四、引力优化算法索引是数据库中重要的数据结构,一个设计良好的索引可以减少I/O操作,从而显著提高查询效率。但也应注意其负面影响,因为每一索引的使用都以磁盘容量作为代价,并降低写操作的性能。因此要合理使用索引。一般而言,其使用应考虑以下原则:(1)在经常进行连接但没有指定为外键的列上建立索引,而不经常连接的列则由优化器自动生成索引;(2)在频繁进行排序或分组的列上建立索引;(3)在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引.如“性别”列上只有“男”、“女”两种取值,若建立索引不但不会提高查询效率,反而会大大降低更新速度;(4)选择长度较短的列建立索引.因为在较短列上建立索引,缓存中能放置更多的索引页,可以减少I/O操作,提高查询速度;(5)若一个关系的更新频率很高,则该关系上建立的索引数不宜太多。因为更新关系时,必须对关系上的索引做相应的修改;(6)如果待排序的列有多个,可以在这些列上建立复合索引。2使用索引方式的并集在嵌套查询中,大型表的顺序存取对查询效率可能产生致命的影响。如一个嵌套3层的查询,如果每层查询都产生1000行数据。则整个查询就要查询10亿行数据。避免这种情况的主要方法就是对连接的列建立索引,按索引路径完成连接运算,从而大大降低连接运算的执行代价。如:books表和bookcategory表要进行连接,就要在“图书类编号”这个列上建立索引。还可以使用并集来避免顺序存取。尽管在所有的检索列上都有索引,但某些形式的WHERE子句强迫优化器使用顺序存取。如下列语句:SELECT*FROMbooksWHERE(图书编号>1101AND图书编号<1150)OR价格=30虽然在“图书编号”和“价格”列上都建有索引,但优化器对该语句的处理还是使用顺序存取路径扫描整个表,因为这个语句要检索的数据行是分离的行的集合,因此应改成以下多条SELECT查询语句的并集形式,强迫优化器对books表使用索引路径处理查询。SELECT*FROMbooksWHERE(图书编号>1101AND图书编号<1150)UNIONSELECT*FROMbooksWHERE价格=303避免嵌套查询句子的层数化查询嵌套的层数每增加一层,查询效率成几何级降低。因此要提高查询效率,就应尽量减少嵌套查询的层数。下面通过具体实例来说明。例如:查询学生成绩信息表Cj(Student_ID,Ks_ID,Studentname,Score)中同时满足两个分数段[Scorel1,Scorel2]、[Score21,Score22]的学生记录,利用嵌套查询语句表示为:SELECTStudent_IdFROMCjWHERECj.Scroe>=Score11ANDCj.Score<=Scorel2ANDStudent_IdIN(SELECTStudent_IdFROMCjWHERECj.Score>=Score21ANDCj.Score<=Score22);在上面的查询中,若每层查询1000行语句,查询量就达到了100万行。如果需要对更多的分数段或对这些分数段的逻辑表达式进行这样的查询,查询效率就更低了。为了减少嵌套查询语句的层数,我们先看下面的命题。命题有区间序列:,,…,且两两不相交,即=Φ(ij)若映射为,则将区间与运算转化为代数和运算,即ANDAND…AND转化为++…+根据上面的命题,将分数段{[Score11,Score12],[Score21,Score22]}映射为数值{1,2},将区间与运算转化为代数和运算。将上面的例子进行转换:将学生成绩表中增加一个辅助整型字段key,将key字段的值设置为:UPDATECjSETkey=1WHERECj.Score>=Score11ANDCj.Score<=Score12UPDATECjSETkey=2WHERECj.Score>=Score21ANDCj.Score<=Score22则将原来的嵌套语句改为:SELECTStudent_IdSUM(DISTINCTkey)FROMCjWHEREkey>0GROUPBYStudent_IdHAVINGSUM(DISTINCTkey)=3可以看出,该语句变得简洁且执行效率要高。通过该实例可知,利用区间运算转换为代数运算,将减少嵌套查询语句嵌套的层数,从而达到提高关系数据库查询效率的目的。4sql的生成模块保证了参数取得好时,清除了分类和操作创建层面的错误在SELECT查询语句中,MATCHES和LIKE关键字支持通配符匹配,技术上称为正规表达式。但这种匹配特别耗时。如:SELECT*FROMStudentWHERESnoLIKE‘2002%’,即使在Sno列上建立了索引,优化器还是会采用顺序扫描方式处理该SELECT语句。但若把SELECT语句改为:SELECT*FROMStudentWHERESno>‘2002000000’ANDSno<‘2003000000’则优化器会利用索引来执行查询,显然会大大提高查询速度。另外,还要避免非开始子串的查询。非顺序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八年级历史下册 第二学习主题 社会主义道路的探索 第5课 艰苦创业的民族脊梁教案 川教版
- 2024学年九年级英语上册 Unit 2 Great People Lesson 7 What Is the Meaning of Life教案(新版)冀教版
- 2024年春八年级生物下册 第7单元 第1章 第1节 植物的生殖教案 (新版)新人教版
- 2024年五年级数学下册 五 分数除法第1课时 分数除法(一)教案 北师大版
- 八年级生物上册 第四单元 第一章 第一节花的结构和类型教案 (新版)济南版
- 2024-2025学年高中历史 第三单元 第二次世界大战 探究活动课一 世界大战的启示-战争给人类带来了什么(2)教学教案 新人教版选修3
- 总经理聘用合同(2篇)
- 银行免还款合同(2篇)
- 麻雀人教版课件
- 第13课《唐诗五首·黄鹤楼》八年级语文上册精讲同步课堂(统编版)
- 阴道镜培训(课堂PPT)
- 《爬山虎的脚》教学课件
- 通信工程资源录入措施
- 人教版英语选择性必修第四册UNIT 4 Sharing中英文对照
- 内分泌疾病内分泌疾病诊疗规范
- (完整word版)手卡模板(总2页)
- 超级椰子油二乙醇酰胺的合成新工艺
- 【原创】六上Unit5 Housework PartA 教学设计
- 高压蒸汽灭菌锅(SANYO)
- 电饭煲项目财务分析表
- 部编版《道德与法治》三年级上册教案(全册)
评论
0/150
提交评论