/*+ use_hash(b, a)*/用法
SELECT /*+ use_hash(b, a)*/
  1,
  NVL(b.AgentWorkGroup, ' '),
  ..............................
  from table1 a,
  table2 b
  where .....................

其中加 :/*+ use_hash(b, a)*/ 能提高查询速度,不知道执行原理,请高手指点~~~
 能否给我提供更多 语句(像:/*+ use_hash(b, a)*/。。。),在哪种情况使用能提高查询的;谢谢!!

------解决方案--------------------
我手里只有这个,你看看.

http://topic.csdn.net/u/20090303/14/b0822a2a-672c-42b8-9d08-1c5036063a4a.html
/*
需求:  
1、网址URL作为查询条件,无具体规律,如:http://forum.csdn.net/PointForum/Forum/PostTopic.aspx 形式  
2、表数据量在千万级  
3、表更新速度很快

问题:  
1、如何表设计,是范式还是保持冗余,抑或其他更有效的方法  
2、如何有效设计索引

实现需求不难,难的是如何最好的实现需求。

*/

--建hash value列  
alter table TAB  
add URLHash as checksum(URL);  
go

--在hash value上创建clustered index  
-- create a non-unqiue clustered index on the hashed column for collisions.  
create clustered index IX_URLHash  
on TAB(URLHash);  
go

--查询处理  
select *  
from TAB  
where URLHash = checksum(@queryURL)  
and URL = @queryURL  
go

--任何index无非是filter and refine的原理, hash来处理url比较合适,collision不会太多

------解决方案--------------------

在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法:
1. /*+ALL_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
例如:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
2. /*+FIRST_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
例如:
SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
3. /*+CHOOSE*/
表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;
表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法;
例如:
SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
4. /*+RULE*/
表明对语句块选择基于规则的优化方法.
例如:
SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
。。。。。。

参考blog:常见Oracle HINT的用法http://blog.csdn.net/tianlesoftware/archive/2009/12/13/4969702.aspx

/*+ hint*/用法,该如何解决的更多相关文章

  1. PLSQL_PLSQL Hint用法总结(概念)

    2014-06-20 Created By BaoXinjian

  2. Oracle Hint 用法

    正确的语法是: select /*+ index(x idx_t) */ * from t x where x.object_id=123 /*+    */ 和注释很像,比注释多了一个“+”,这就是 ...

  3. C#中Invoke的用法()-解决子线程访问主线程控件、线程安全等问题

    引自https://www.cnblogs.com/lsgsanxiao/p/5523282.html invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概 ...

  4. ORACLE使用WITH AS和HINT MATERIALIZE优化SQL解决FILTER效率低下

     在做项目的过程中,一个页面使用类似例如以下的SQL查询数据.为了保密和使用方便,我把项目中有关的表名和字段替换使用ORACLE数据库中的系统表和字段. 在我所做的项目中.类似ALL_TABLES ...

  5. Oracle Hint用法整理笔记

    目录 1./+ result_cache / 2./+ connect_by_filtering / 3./+ no_unnset / 4./+ index(表别名 索引名) / 5./+ INDEX ...

  6. on duplicate key update 的用法说明(解决批量操作数据,有就更新,没有就新增)mybatis批量操作数据更新和添加

    项目用的ORM框架是用springdatajpa来做的,有些批量数据操作的话,用这个效率太低,所以用mybatis自己写sql优化一下. 一般情况,我们肯定是先查询,有就修改,没有就添加,这样的话,单 ...

  7. Oracle Hint用法总结

    1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_I ...

  8. Message "'OFFSET' 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效。" 解决办法 EntityFrameworkCore

    由于新版的EntityFrameworkCore默认使用的是SqlServer2012或以上版本的Sql语法分页,来提高性能. 所以使用数据库的版本如果低于2012(如Sqlserver2008)需要 ...

  9. CompletionService用法踩坑解决优化

    转自:https://blog.csdn.net/xiao__miao/article/details/86352380 1.近期工作的时候,运维通知一个系统的内存一直在增长,leader叫我去排查, ...

随机推荐

  1. Libre OJ 144、145 (DFS序)

    部分参考自博客:https://blog.csdn.net/hpu2022/article/details/81910490 在许多问题中,由于树结构复杂通常会导致问题很棘手,因为其实非线性结构,操作 ...

  2. 纪中2018暑假培训day3提高a组改题记录(混有部分b组)

    day3 模拟赛,看了看a组题,发现是博弈论,非常开心(因为好玩),于是做的a组.结果差点爆零,死命纠结t1的sg函数,但其实只是一个dp,不用扯到sg函数的那种. t1: Description 被 ...

  3. (转) git--Remote远程仓库的使用

    远程仓库 远程仓库的作用 使用Git的远程仓库可以实现团队协作开发. 假设我们已经有了一个远程仓库,地址是:https://github.com/CnPeng/test.git 1) 克隆远程版本仓库 ...

  4. MooFest POJ - 1990 (树状数组)

    Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gather ...

  5. js解析base64

    var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ...

  6. please select android sdk

  7. mysql5.6 主从同步配置

    一:配置前说明 在centos 6环境下配置 mysql 5.6主从同步 准备两台测试的虚拟机,2台虚拟机上都安装mysql软件,并开启mysql服务主master : 192.168.1.110从s ...

  8. shell脚本删除log日志

    删除log文件简单shell脚本 经常会遇到日志把磁盘占满的情况,引起低级故障.我个人在实际工作中,尝试了如下的方法,比较简单,而且快捷有效. #!/bin/bash # /root/log_dele ...

  9. ojdbc6下载地址

    https://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html oracle驱动先去官网下 ...

  10. 剑指Offer_编程题_9

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. class Solution { public: int jumpFloorI ...