oracle hint 说明

oracle hint 说明

ID:5376879

大小:789.66 KB

页数:26页

时间:2017-12-08

oracle  hint  说明_第1页
oracle  hint  说明_第2页
oracle  hint  说明_第3页
oracle  hint  说明_第4页
oracle  hint  说明_第5页
资源描述:

《oracle hint 说明》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、OptimizationGoalsandApproachesALL_ROWSHintALL_ROWS指示优化器以全局最佳吞吐量为目的对语句进行优化,即达成最低的资源消耗总量。例如,优化器使用查询优化方法把以下语句优化为最佳吞吐量。SELECT/*+ALL_ROWS*/employee_id,last_name,salary,job_idFROMemployeesWHEREemployee_id=107;如果你在SQL语句中指定了ALL_ROWS或者FIRST_ROWS标签,而且数据字典中没有语句访问表的统计信息,优化器会使用默认的统计值,比如根据已

2、经分配给表的储存,估计缺少的统计信息,之后再选择一个执行计划。这些估计值一般不如使用DBMS_STATS包收集的信息准确,所以建议使用DBMS_STATS包来收集统计信息。如果你使用ALL_ROWS或者FIRST_ROWS标签指定了访问路径或者联接操作,优化器会优先使用被标签指定的访问路径或者联接操作。FIRST_ROWSHintFIRST_ROW标签指示Oracle为快速响应而优化语句,选择可以最快返回前n行的执行计划。Integer指定返回的行数。例如,优化器使用查询优化方法来优化以下语句来使其达到最佳响应时间:SELECT/*+FIRST_R

3、OWS(10)*/employee_id,last_name,salary,job_idFROMemployeesWHEREdepartment_id=20;在这个例子中,每个部门都包含了多个员工,用户希望可以尽快显示部门20的前10个员工。优化器会在DELETE语句与UPDATE语句中忽略这个提示,也会在包含一种阻塞操作的SELECT语句中忽略这个提示。阻塞操作即排序以及分组等。这些操作不能被优化为最佳响应时间,因为Oracle数据库必须在返回结果集的第一行之前访问所有被该语句访问的行。如果你在任何这类语句中指定了这个提示,数据库会把该语句优化为

4、最佳吞吐量。另请参见:ALL_ROWSHint来获得更多的信息。AccessPathHintsCLUSTERHintCLUSTER提示指示优化器使用集群扫描来访问指定的表,这个提示只适用于属于索引聚簇中的表。FULLHintFULL提示指示优化器对一个指定的表进行全表扫描。例如:SELECT/*+FULL(e)*/employee_id,last_nameFROMhr.employeeseWHERElast_nameLIKE:b1;即使WHERE子句指定的LAST_NAME列上有可用的索引,Oracle数据库仍然会通过在表employees上执行一

5、个全表扫描来执行该语句。Employees在FROM子句中指定了别名e,所以提示必须参照表的别名而不是本身的名字。即使模式名在FROM子句中已经被指定了,也不要在提示中指定模式名。HASHHintHASH提示指示优化器使用哈希扫描来访问指定的表,这个提示仅适用于处于哈希聚簇中的表。INDEXHintINDEX提示指示优化器使用索引扫描来访问指定的表。你可以为基于函数的索引,域索引,B树索引,位图索引以及位图联接索引来使用INDEX提示。提示的具体行为取决于INDEXSPEC的具体指定:·如果INDEX提示指定了一个单一并且可用的索引,数据库会执行在

6、该索引上的一个扫描,优化器不会考虑全表扫描或者扫描表上的另一个索引。·对于一个包含多个索引的组合的INDEX提示,Oracle建议使用INDEX_COMBINE而不是INDEX提示,那是一个更加灵活的提示。如果INDEX提示指定了一个可用索引的列表,优化器会考虑在列表中的每一个索引扫描所需要的成本,然后执行成本最低的索引扫描。如果扫描列表中的多个索引然后合并结果有最小的成本,数据库也会使用这样的访问路径。数据库不会考虑全表扫描或者对不在INDEX提示列表中的索引的扫描。·如果INDEX提示没有指定索引,优化器会考虑所有在这个表上可用的索引所需的成本

7、,然后执行成本最小的索引扫描。如果扫描多个索引然后合并结果有最小的成本,数据库也会使用这样的访问路径。优化器不会考虑全表扫描。例如:SELECT/*+INDEX(employeesemp_department_ix)*/employee_id,department_idFROMemployeesWHEREdepartment_id>50;NO_INDEXHintNO_INDEX提示指示优化器不使用指定的表中的一个或者多个索引。例如:SELECT/*+NO_INDEX(employeesemp_empid)*/employee_idFROMemplo

8、yeesWHEREemployee_id>200;每个参数都提供了与INDEXHint相同的目的:·如果提示中指定了单一可

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。