文件名称:查询优化器-the design and analysis of algorithms
文件大小:4.17MB
文件格式:PDF
更新时间:2024-06-29 04:39:07
达梦,DM7
28.1 优化目标 达梦数据库查询优化器的优化目标为最快响应时间。通过设置参数 FIRST_ROWS来决 定优先返回多少条记录给用户,而不需要等待全部结果确定后再输出,FIRST_ROWS 设置 范围为 1~1000,单位为行。例如:FIRST_ROWS = 10,意思是查询出 10条结果就立即 返回给用户。可以根据实际情况,调整参数值。 28.2 查询优化器 查询优化器通过分析可用的执行方式和查询所涉及的对象统计信息来生成最优的执行 计划。此外,如果存在 HINT优化指示,优化器还需要考虑优化提示的因素。 查询优化器的处理过程包括: 1. 优化器生成所有可能的执行计划集合; 2. 优化器基于字典信息的数据分布统计值、执行语句涉及到的表、索引和分区的存储 特点来估算每个执行计划的代价。代价是指 SQL 语句使用某种执行方式所消耗的 系统资源的估算值。其中,系统资源消耗包括 I/O、CPU使用情况、内存消耗等; 3. 优化器选择代价最小的执行方式作为该条语句的最终执行计划。 优化器所做的操作有:查询转换、估算代价、生成计划。 28.2.1查询转换 查询转换是指把经过语法、语义分析的查询块之间的连接类型、嵌套关系进行调整,生 成一个更好的查询计划。常用的查询转换技术包括过滤条件的下放、相关子查询的去相关性。 1. 过滤条件下放:在连接查询中,把部分表的过滤条件下移,在连接之前先过滤,可 以减少连接操作的数据量,提升语句性能; 2. 相关子查询的去相关性:把与子查询相关的外表与内表采用半连接的方式执行,放 弃默认采取的嵌套连接方式,对性能有较大提升。 28.2.2估算代价 估算代价是指对执行计划的成本进行估算。执行节点之间的代价值相关性较强,一个执 行节点的代价包括该节点包含的子节点代价。代价衡量指标包括选择率、基数、代价。 选择率是指满足条件的记录占总记录数的百分比。记录集可以是基表、视图、连接或分