操作方法

操作方法:设置 SQL 提示以指示 Oracle 优化器选择执行计划

Last Published: May 7, 2021

摘要

Oracle 提示将向优化器提供指令,以便为正在执行的 SQL 语句选择执行计划。

Oracle INDEX 提示指示优化器对指定表使用索引扫描。 将 INDEX 提示用于基于函数、域、B 树、位图和位图连接索引。

使用包含 ST_Geometry 属性和 st_spatial_index 的表时,需要指定 Oracle INDEX 提示和 st_spatial_index 的名称以指示优化器通过索引来访问数据。

如 Oracle 的 SQL 参考文档所述,(“如果 INDEX 提示指定了单个可用索引,则数据库将对该索引执行扫描。 优化器不考虑全表扫描或表上另一个索引的扫描。”)当指定了 INDEX 提示时,优化器将使用索引作为主要访问路径。

注: Oracle 12c 中的优化器可以覆盖这种类型的提示。

过程

以下示例将演示一个 SQL 语句,该语句使用两个谓词过滤器来查询 parcels 表,其中所有者等于“ARATA”,并且包络矩形与特定区域相交。

Parcels 表具有关于形状和所有者属性的索引。 通过在 SQL 语句中包含 INDEX 提示“/*+ INDEX (parcels shape_idx) */”,
可指示优化器使用形状的索引作为访问路径(即使所有者索引的选择性和成本小于使用形状指数的成本也是如此)。

SQL> SELECT /*+ INDEX (parcels shape_idx) */ 2 FROM parcels 3 WHERE owner = 'ARATA' 4 AND st_envintersects(shape, 10, 12, 12, 14) = 1;

有关设置 Oracle 提示和其他提示的详细信息,请参阅 Oracle 文档。

文章 ID:000009658

从 ArcGIS 专家处获得帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项

相关信息

发现关于本主题的更多内容