Dav_笔记14:优化程序提示 HINTs -1

发布于:2025-02-14 ⋅ 阅读:(160) ⋅ 点赞:(0)

可以将优化程序提示与SQL语句一起使用来更改执行计划。本章介绍如何使用提示指示优化器使用特定方法。

本章包含以下部分:

■优化程序提示概述

■指定提示

■使用带有视图的提示

优化程序提示概述

提示是对优化器的指令。编写SQL时,您可能知道有关优化程序未知的数据的信息。提示使您可以通常由优化程序做出决策,有时会导致优化程序选择它认为成本较高的计划。

在测试或开发环境中,提示对于测试特定访问路径的性能很有用。例如,您可能知道某个索引对某些查询更具选择性。在这种情况下,您可以使用提示来指示优化程序使用更好的执行计划。

提示的缺点是必须管理,检查和控制的额外代码。数据库和主机环境的变化可能会使提示过时甚至产生负面后果。出于这个原因,通过提示进行测试,但使用其他技术来管理SQL执行计划,例如SQL Tuning顾问程序和SQL计划基准。

Oracle数据库支持60多个提示,每个提示可能包含零个或多个参数。语句块只能有一个包含提示的注释,并且该注释必须遵循SELECT,UPDATE,INSERT,MERGE或DELETE关键字。例如,以下提示指示优化器选择以最低成本从employees表生成前10行的查询计划:

SELECT /*+ FIRST_ROWS(10) */ * FROM employees;

提示类型

提示可以是以下一般类型:

■单表

在一个表或视图上指定单表提示。 INDEX和USE_NL是单表提示的示例。

■多表

多表提示类似于单表提示,但提示可以指定一个或多个表或视图。 LEADING是多表提示的示例。请注意,USE_NL(table1 table2)不被视为多表提示,因为它是USE_NL(table1)和USE_NL(table2)的快捷方式。

■查询块

查询块提示对单个查询块进行操作。 STAR_TRANSFORMATION和UNNEST是查询块提示的示例。

■声明

语句提示适用于整个SQL语句。 ALL_ROWS是语句提示的示例。

按类别提示

优化程序提示分为以下类别:

■优化方法和目标的提示  Hints for Optimization Approaches and Goals

■启用优化程序功能的提示 Hints for Enabling Optimizer Features

■访问路径的提示 Hints for Access Paths

■加入订单的提示 Hints for Join Orders

■联接操作的提示 Hints for Join Operations

■在线应用程序升级的提示 Hints for Online Application Upgrade

■并行执行的提示 Hints for Parallel Execution

■查询转换的提示  Hints for Query Transformations

■其他提示    Additional Hints

这些类别以及每个类别中包含的提示将在后面的部分中列出。


网站公告

今日签到

点亮在社区的每一天
去签到