ITPub博客

首页 > Linux操作系统 > Linux操作系统 > use hint(注意)zz

use hint(注意)zz

原创 Linux操作系统 作者:arthurshen_bleum 时间:2009-03-26 17:54:11 0 删除 编辑

Oracle的hint种类繁多,大致可以分为下面几类:
优化方式和目标:如RULE、CHOOSE、FIRST_ROWS、ALL_ROWS等。
访问路径:如INDEX、FULL、CLUSTER、INDEX_FFS等。
查询转换:如MERGE、USE_CONCAT、NO_EXPAND等。
连接顺序:如LEADING、ORDERED、STAR等。
连接操作:如USE_NL、USE_HASH、USE_MERGE等。
并行执行:如PARALLE、NOPARALLEL、PARALLEL_INDEX等。
其他类型;如APPEND、UNNEST、CACHE等。

INDEX只是Hint的一类。

关于LEADING、ORDERED:
    /*+ORDERED*/提示按照from后表的顺序执行。
    /*+LEADING(table1 table2 ...)*/提示按照指定顺序执行。
关于USE_NL、USE_HASH、USE_MERGE:
    我测试的是10g,三者只需填写表名作为参数,无顺序需要,应该是Oracle自动选择驱动表。
    但是、可以用LEADING或ORDERED指定顺序。
     (注意)INDEX的使用影响的是表自身的查询;USE_NL、USE_HASH、USE_MERGE影响的是表之间的连接。
    详细参考:http://hi.baidu.com/di%5Fwan/modify/blog/618aedca267ab783c8176829

关于INDEX参考:http://hi.baidu.com/di%5Fwan/blog/item/fd943290b5a66388a877a424.html


Hint是把双刃剑,甚至是颗炸弹。

对于DB设计者、SQL制作者、DBA在优化SQL时,存在以下效率的高低:
追加约束条件 > 调整SQL逻辑 > 设计INDEX > 加入Hint
而且越后面的风险也越大。
因为开发环境、测试环境、最终客户环境的数据量、数据库版本、硬件等等总会有不同;
而Hint是强制执行的(自动忽略错误Hint语句),
就会产生在某处高效的Hint,在另一处却非常耗费资源。

如果不是可以在最终客户环境上操作的DBA,最好不要写Hint,
只要做好INDEX,
Oracle的自动优化一定会用。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20945761/viewspace-580275/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: leading(zz)
下一篇: 管理Oracle的实例
请登录后发表评论 登录
全部评论

注册时间:2009-02-26

  • 博文量
    36
  • 访问量
    33976