CREATE TABLE T_SMAINT_2016012703 parallel 4 nologging AS
SELECT /*+parallel(4) leading(s a) use_hash(A) index(s IDX_CS_SERVICE_RECORD_MD2_04) */S.SMAINT_ID, S.SMAINT_DESC
FROM T_CS_SERVICE_RECORD S
JOIN T_CD_MAINT A
ON A.SMAINT_ID = S.SMAINT_ID
AND S.SORG_ID = 'MDKT'
AND A.SORG_ID = S.SORG_ID
AND A.PROD_ID = 'KT'
AND S.PUB_CREATE_DATE BETWEEN
TO_DATE('2015-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
TO_DATE('2015-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss');
parallel 4 nologging:并行(Parallel)使用
/*+parallel(4) leading(s a) use_hash(A) index(s IDX_CS_SERVICE_RECORD_MD2_04) */
parallel(4):4个进程并行使用
leading(s a):指定表的查询顺序
先查s表,根据S.PUB_CREATE_DATE条件走索引IDX_CS_SERVICE_RECORD_MD2_04查询结果集,再用hash连接关联a表。
哈希连接会耗费大量cup和内存,而嵌套循环则会少很多。
如上例子,如果使用嵌套循环,根据s表查询结果集一行一行数据关联a表循环查询
使用leading和use_nl来设置表的查询顺序,来加快查询速度,一般把小表设为第一个表。
/*+LEADING(TABLE)*/
  将指定的表作为连接次序中的首表.
/*+USE_NL(TABLE)*/
  将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表.

1.查询
Sql代码  
SELECT /*+ Parallel(t,8) */ * FROM emp t;  
SELECT /*+ Parallel(8) */ * FROM emp t;  
SELECT /*+ Parallel */ * FROM emp t;         
 
2.创建索引
Sql代码  
create index idx_emp_test on emp(empno,ename,job) nologging parallel 32;  
         创建索引的时候,如果有条件的话一定要加并行!客户这边的ExaData服务器,对运单表(5000多万记录,90多个字段,60多G数据)创建索引,索引字段包含6列,并行度开到64,创建索引耗时竟然只消耗13秒多点,把俺惊讶的……

Oracle多线程并行使用、关联与指定索引执行的更多相关文章

  1. Oracle不能并行直接添加主键的方法:先建唯一索引后建主键

    环境:Oracle 11.2.0.3 需求:生产一张表由于前期设计不当,没有主键.现需要添加主键,数据量很大,想并行建立. 1.直接添加,提示ora-3001:未实施的功能;只能单线程建立主键 SQL ...

  2. ABAP中SQL语句,指定索引(oracle)

    ①常用的两种方法: 1.指定使用全表扫描:%_HINTS ORACLE 'FULL(table_name)' 表示扫描整个表 2.指定索引:%_HINTS ORACLE 'INDEX("ta ...

  3. Oracle数据泵导入的时候创建索引是否会使用并行?

    一.疑问,Oracle数据泵导入的时候创建索引是否会使用并行? 某客户需要使用数据泵进行迁移,客户咨询导入的时间能不能加快一点. 那么如何加快导入的速度呢? 多加一些并行,那么创建索引内部的索引并行度 ...

  4. 利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引)

    利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引) ##应用情景 项目中有大量的SQL,尤其是涉及到统计报表时,表关联比较多,当初开发建表时也没搞好索引关联的,上线后 ...

  5. Java多线程--并行模式与算法

    Java多线程--并行模式与算法 单例模式 虽然单例模式和并行没有直接关系,但是我们经常会在多线程中使用到单例.单例的好处有: 对于频繁使用的对象可以省去new操作花费的时间: new操作的减少,随之 ...

  6. Oracle update和select 关联

    Oracle update和select 关联 目录 Oracle update和select 关联 1.介绍 2.解决方法 2.1.需求 2.2.错误演示 2.3.解决方法 1.介绍 本文主要向大家 ...

  7. oracle 使用ID关键字作列名导致索引失效

    oracle表空间变更导致主键索引失效,重建索引即可

  8. oracle使用LEFT JOIN关联产生的问题在查询结果中使用CASE WHEN 无法判断

    oracle使用LEFT JOIN关联产生的问题在查询结果中使用CASE WHEN 无法判断 查询方式一: SELECT CASE WHEN (SELECT CAST(SUM(CASE ) THEN ...

  9. Oracle两张表关联批量更新其中一张表的数据

    Oracle两张表关联批量更新其中一张表的数据 方法一(推荐): UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE EXI ...

随机推荐

  1. Windows服务程序和安装程序制作

    转:http://www.cr173.com/html/15350_1.html 本文介绍了如何用C#创建.安装.启动.监控.卸载简单的Windows Service 的内容步骤和注意事项. 一.创建 ...

  2. mysql常用脚本

    1.执行拼接字符串sql语句(可传参数) set @dbname='trickraft_14f.'; set @sql=CONCAT('SELECT * FROM ',@dbname,'Armforc ...

  3. QT学习之路---信号槽

    #include<QApplication> #include<QPushButton> int main(int argc,char *argv[]) { QApplicat ...

  4. selenium启动firefox、ie、chrome各浏览器方法

    1.启动firefox浏览器 a.如果你的本地firefox是默认路径安装的话,如下方式即可启动浏览器 WebDriver driver = new FirefoxDriver(); driver.g ...

  5. Ext 4.2以后版本 ComboBox 联动

    //combox树 ComboTree: function (upDep, empStore) { var com = Ext.create('Ext.ux.desktop.ComboTree', { ...

  6. PHP获取文件目录dirname(__FILE__),getcwd()

    以discuz x2.5为例 D:/www/upload2.5/test.php D:/www/upload2.5/source/class/class_test.php test.php文件如下 & ...

  7. Android开发-API指南-Fragment

    Fragments 英文原文:http://developer.android.com/guide/components/fragments.html 采集日期:2014-12-31 在本文中 设计理 ...

  8. win8或win8.1修改注册表失败的原因

    win8 and win8.1 modify the registry need compiled to be different versions according to the os bits.

  9. 注销CA登录

    //移除CA缓存HttpCookie ticketCookie = Request.Cookies[FormsAuthentication.FormsCookieName];FormsAuthenti ...

  10. Microsoft Visual C++ 2010(86) Redistributable不能安装完美解决

    见http://jingyan.baidu.com/article/9c69d48f41aa6313c9024ebe.html 1. 去mircosoft下载安装包(vcredist_x64.exe) ...