DM达梦数据库--查询优化

本文详细介绍了DM达梦数据库的查询优化过程,包括优化目标、查询优化器的工作原理、查询转换、代价估算、生成计划、连接处理、统计信息的作用以及执行查询的细节。优化器的目标是最快响应时间,通过各种技术如过滤条件下放、相关子查询去相关性等提高查询性能。此外,文章还讨论了统计信息对优化器的重要性以及如何利用统计信息生成执行计划。
摘要由CSDN通过智能技术生成

数据库执行一条语句有多种方式,为了选择最优的执行方式,产生了查询优化器。查询 优化器分析语句运行时的所有因素,选择最优的方式去执行,提高了查询效率。因此,查询 优化是数据库执行SQL语句的重要过程,决定了数据库的查询性能。
1、优化目标
达梦数据库查询优化器的优化目标为最快响应时间。通过设置参数FIRST_ROWS来决 定优先返回多少条记录给用户,而不需要等待全部结果确定后再输出,FIRST_ROWS设置 范围为1~1000,单位为行。例如:FIRST_ROWS = 10,意思是查询出10条结果就立即 返回给用户。可以根据实际情况,调整参数值。
2、查询优化器
查询优化器通过分析可用的执行方式和查询所涉及的对象统计信息来生成最优的执行 计划。此外,如果存在HINT优化提示,优化器还需要考虑优化提示的因素。
查询优化器的处理过程包括:
1.优化器生成所有可能的执行计划集合;
2. 优化器基于字典信息的数据分布统计值、执行语句涉及到的表、索引和分区的存储 特点来估算每个执行计划的代价。代价是指SQL语句使用某种执行方式所消耗的 系统资源的估算值。其中,系统资源消耗包括I/O、CPU使用情况、内存消耗等;
3. 优化器选择代价最小的执行方式作为该条语句的最终执行计划。
优化器所做的操作有:查询转换、估算代价、生成计划
1>查询转换
查询转换是指把经过语法、语义分析的查询块之间的连接类型、嵌套关系进行调整,生 成一个更好的查询计划。常用的查询转换技术包括过滤条件的下放、相关子查询的去相关性。
1.过滤条件下放:在连接查询中,把部分表的过滤条件下移,在连接之前先过滤,可 以减少连接操作的数据量,提升语句性能;
2. 相关子查询的去相关性:把与子查询相关的外表与内表采用半连接的方式执行,放 弃默认采取的嵌套连接方式,对性能有较大提升。
2>估算代价
估算代价是指对执行计划的成本进行估算。执行节点之间的代价值相关性较强,一个执 行节点的代价包括该节点包含的子节点代价。代价衡量指标包括选择率、基数、代价。 选择率是指满足条件的记录占总记录数的百分比。记录集可以是基表、视图、连接或分
组操作的结果集。选择率和查询谓词相关,如name =‘韩梅梅’;或者是谓词的连接,如 name ='韩梅梅’and no =‘0123’。一个谓词可以看作是一个过滤器,过滤掉结果集中 不满足条件的记录。选择率的范围从0到1。其中,0表示没有记录被选中,1表示行集中 所有记录都被选中。
如果没有统计信息,则优化器依据过滤条件的类型来设置对应的选择率。例如,等值条 件的选择率低于范围条件选择率。这些假定是根据经验值,认为等值条件返回的结果集最少。
如果有统计信息,则可以使用统计信息来估算选择率。例如,对于等值谓词(name =‘韩 梅梅’),如果name列有N个不同值,那么,选择率是N分之一。
基数是指整个行集的行数,该行集可以是基表、视图、连接或分组操作的结果集。 代价表示资源的使用情况。查询优化器使用磁盘I/O、CPU占用和内存使用作为代价 计算的依据,所以代价可以用I/O数、CPU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值