Oracle HINT 说明.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle HINT 说明.pdf

Optimization Goals and Approaches ALL_ROWS Hint ALL_ROWS 指示优化器以全局最佳吞吐量为目的对语句进行优化,即达成最低的资源消 耗总量。例如,优化器使用查询优化方法把以下语句优化为最佳吞吐量。 SELECT /*+ ALL_ROWS */ employee_id, last_name, salary, job_id FROM employees WHERE employee_id = 107; 如果你在SQL 语句中指定了ALL_ROWS 或者FIRST_ROWS 标签,而且数据字典中没有语 句访问表的统计信息,优化器会使用默认的统计值,比如根据已经分配给表的储存,估计缺 少的统计信息,之后再选择一个执行计划。这些估计值一般不如使用DBMS_STATS 包收集的 信息准确,所以建议使用DBMS_STATS 包来收集统计信息。 如果你使用ALL_ROWS 或者FIRST_ROWS 标签指定了访问路径或者联接操作,优化器会 优先使用被标签指定的访问路径或者联接操作。 FIRST_ROWS Hint FIRST_ROW 标签指示 Oracle 为快速响应而优化语句,选择可以最快返回前 n 行的执行 计划。Integer 指定返回的行数。 例如,优化器使用查询优化方法来优化以下语句来使其达到最佳响应时间: SELECT /*+ FIRST_ROWS(10) */ employee_id, last_name, salary, job_id FROM employees WHERE department_id = 20; 在这个例子中,每个部门都包含了多个员工,用户希望可以尽快显示部门 20 的前 10 个员工。 优化器会在 DELETE 语句与 UPDATE 语句中忽略这个提示,也会在包含一种阻塞操作的 SELECT 语句中忽略这个提示。阻塞操作即排序以及分组等。这些操作不能被优化为最佳响 应时间,因为 Oracle 数据库必须在返回结果集的第一行之前访问所有被该语句访问的行。 如果你在任何这类语句中指定了这个提示,数据库会把该语句优化为最佳吞吐量。 另请参见:ALL_ROWS Hint 来获得更多的信息。 Access Path Hints CLUSTER Hint CLUSTER 提示指示优化器使用集群扫描来访问指定的表,这个提示只适用于属于索引聚 簇中的表。 FULL Hint FULL 提示指示优化器对一个指定的表进行全表扫描。例如: SELECT /*+ FULL(e) */ employee_id, last_name FROM hr.employees e WHERE last_name LIKE :b1; 即使WHERE 子句指定的LAST_NAME 列上有可用的索引,Oracle 数据库仍然会通过在表 employees 上执行一个全表扫描来执行该语句。 Employees 在FROM 子句中指定了别名e,所以提示必须参照表的别名而不是本身的名 字。即使模式名在FROM 子句中已经被指定了,也不要在提示中指定模式名。 HASH Hint HASH 提示指示优化器使用哈希扫描来访问指定的表,这个提示仅适用于处于哈希聚簇 中的表。 INDEX Hint INDEX 提示指示优化器使用索引扫描来访问指定的表。你可以为基于函数的索引,域索 引,B 树索引,位图索引以及位图联接索引来使用INDEX 提示。 提示的具体行为取决于INDEXSPEC 的具体指定: · 如果INDEX 提示指定了一个单一并且可用的索引,数据库会执行在该索引上的一个 扫描,优化器不会考虑全表扫描或者扫描表上的另一个索引。 · 对于一个包含多个索引的组合的 INDEX 提示,Oracle 建议使用 INDEX_COMBINE 而 不是INDEX 提示,那是一个更加灵活的提示。如果INDEX 提示指定了一个可用索引 的列表,优化器会考虑在列表中的每一个索引扫描所需要的成本,然后执行成本最 低的索引扫描。如果扫描列表中的多个索引然后合并结果有最小的成本,数据库也 会使用这样的访问路径。数据库不会考虑全表扫描或者对不在I

文档评论(0)

zhiminwei + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档