关系数据库的查询优化

您所在的位置:网站首页 试述查询优化的一般准则 关系数据库的查询优化

关系数据库的查询优化

2023-11-25 06:08| 来源: 网络整理| 查看: 265

关系查询优化是影响关系数据库管理系统性能的关键因素。

一、查询优化概述

查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较高的效率,而且在于系统可以比用户程序的“优化”做得更好。 1. 优化可以从数据字典中获得更多统计信息。 2. 如果数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。在非关系系统中则必须重写程序,而重写程序在实际应用中往往是不太可能的。 3. 优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。 4. 优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。系统的自动优化相当于使得所有人都拥有这些优化技术。 在集中式数据库中,查询执行开销主要包括磁盘存取块数(I/O代价)、处理机时间(CPU代价)以及查询的内存开销。在分布式数据库中还要加上通信代价,即: 总代价=I/O代价+CPU代价+内存代价+通信代价。 由于磁盘I/O操作涉及机械动作,需要时间与内存操作相比要高几个数量级,在计算查询代价时一般用查询处理读写的块数作为衡量单位。 查询优化的总目标是选择有效的策略,求得给定关系表达式的值,使得查询代价较小,因为查询优化的搜索空间有时非常大,实际系统选择的策略不一定是最优的,而是较优的。

二、代数优化

代数优化是基于关系代数等价变换规则的优化方法。 代数优化策略是通过对关系代数表达式的等价变换来提高查询效率。所谓关系代数表达式的等价是指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的。两个关系表达式E1和E2是等价的。

查询树的启发式优化

典型的启发式规则: 1. 选择运算应尽可能先做。 2. 把投影运算和选择运算同时进行。如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描次关系的同时完成所有这些运算以避免重复扫描关系。 3. 把投影同其前或后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系。 4. 把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算,连接(特别是等值连接)运算要啊比同样关系上的笛卡儿积省很多时间。 5. 找出公共子表达式。

三、物理优化

代数优化改变查询语句中操作的次序和组合,但不涉及底层的存取路径。物理优化就是要选择高效合理的操作算法或存取路径,求得优化的查询计划,达到查询优化的目标。 选择的方法可以是: 1. 基于规则的启发式优化。 2. 基于代价估算的优化。 3. 两者结合的优化方法。常常先使用启发式规则选取若干个较优的候选方案,减少代价估算的工作量,然后分别计算这些候选方案的执行代价,较快地选出最终的优化方法。

基于启发式规则的存取路径选择优化

选择操作的启发式规则 对于小关系,使用全表顺序扫描,即使选择列上有索引。 对于大关系,启发式规则有: 1. 对于选择条件是“主码=值”的查询,查询结果最多是一个元组,可以选择主码索引,一般都关系数据库管理系统会自动建立主码索引。 2. 对于选择条件是“非主属性=值”的查询,并且选择列上有索引,则要估算查询结果的元组数目,如果比例较小(



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3