zoukankan      html  css  js  c++  java
  • Hint

    Hint是Oracle提供的一种sql语法,它允许用户在sql中插入相关的语法来影响sql的执行方式。如果CBO(基于成本的优化器)认为使用Hint会导致错误的结果,Hint将被忽略

    1. 访问路径相关的Hint:

    FULL Hint: 告诉优化器对指定的表通过全表扫描的方式访问数据

    • select /*+ full(t) */ * from t;
    • select /*+ full(a) */ * from t a;

    INDEX Hint: 告诉优化器对指定的表通过索引的方式访问数据,当访问索引会导致结果集不完整时,优化器将忽略这个Hint

    select /*+ index(t t_ind) */ * from t where id>1;

    NO_INDEX Hint:  告诉优化器对指定的表不允许使用索引的方式访问数据

    select /*+ no_index(t t_ind) */ * from t where id>1;

    INDEX_DESC Hint: 告诉优化器对指定的索引通过降序的方式访问数据,当访问索引会导致结果集不完整时,优化器将忽略这个Hint

    select /*+ index_desc(t t_ind) */ * from t where id=1;

    INDEX_COMBINE Hint: 告诉优化器强制使用位图索引,当访问索引会导致结果集不完整时,优化器将忽略这个Hint

    select /*+ index_combine(t t_ind) */ * from t;

    INDEX_FFS Hint: 告诉优化器以INDEX_FFS(INDEX Fast Full Scan)的方式访问数据,当访问索引会导致结果集不完整时,优化器将忽略这个Hint

    select /*+ index_ffs(t t_ind) */ * from t where id<10;

    INDEX_JOIN: 索引关联,当谓词中引用的列都有索引的时候,可以通过索引关联的方式来访问数据

    select /*+ index_join(t t_ind t_bm) */ id from t where id>100 and name='hello';

    2. 表关联顺序的Hint:

    LEADIND Hint: 在一个多表关联的查询中,这个hint指定由哪个表作为驱动表(优化器优先访问哪个表上的数据)

    select /*+ leading(t1, t) */ t.* from t, t1 where t1.id=t.id;

    3. 表关联操作的Hint:

    USE_HASH, USE_NL, USE_MERGE Hint: 这三种关联方式是多表关联中主要的关联方式。通常来讲,当两个表都比较大时,hash join的效率要高于nested loops(嵌套循环)。

    hash join是将一个表(小一点那个表)做hash运算,将列数据存储到hash列表中,从另一个表抽取记录做hash运算,到hash列表中找到相应的值做匹配。

    nested loop是从一个表中读取数据,访问另一张表(通常是索引)来做匹配,适用于一个关联表比较小的时候,效率更高。

    merge join首先将关联表的关联列各自做排序,然后从各自的排序表中抽取数据到另一个排序表中做匹配,它需要做更多的排序,所以消耗资源更多,通常来说,能够使用merge join的地方,hash join都可以发挥更好性能。

    NO_USE_HASH, NO_USE_NL, NO_USE_MERGE Hint

    4. 并行执行相关的Hint:

     PARALLEL Hint:指定sql执行的并行度,这个值将覆盖表自身设定的并行度,如果这个值为default,CBO将使用系统参数值

    select /*+ parallel(t 4) */ count(*) from t;

    NO_PARALLEL Hint

    5.其他方面的Hint

    DYNAMIC_SAMPLING Hint: 提示sql执行时动态采样的级别。从0-10,它将覆盖系统默认的动态采样级别

    select /*+ dynamic_sampling(t 4) */ * from t where id>1;

     

     

     

  • 相关阅读:
    HTML5开发 桌面提醒功能
    自然框架总体设计
    Inversion of Logging
    Wind.js在移动跨平台框架PhoneGap中的异步体验
    MSBuild基本概念
    PortalBasic Web 应用开发框架:应用篇
    检测常见ASP.NET配置安全漏洞
    线程与进程的比较
    多层架构下的一个进销存项目
    Model Driven Architecture
  • 原文地址:https://www.cnblogs.com/PerOpt/p/3734019.html
Copyright © 2011-2022 走看看