Oracle大数据and索引

来源:互联网 发布:sql判断库存是否足够 编辑:程序博客网 时间:2024/05/16 06:30

Oracle大数据和索引

1      第一步:创建表

DROP TABLE MULTI_INDEX_TABLE ;

CREATE TABLE MULTI_INDEX_TABLE (                                                                                                                                

           MI_ID VARCHAR2(10) PRIMARY KEY ,

           MI_USERNAME  VARCHAR2(10) ,

           MI_PASSWORD  VARCHAR2(10) ,

           MI_EMAIL  VARCHAR2(15) ,

           MI_SEX  CHAR(2) ,

           MI_ADDRESS  VARCHAR2(20)

);

2      第二步:创建(复合)索引

赋予用户使用索引的权限:grant execute on ctx_ddl to scott ;

为表MULTI_INDEX_TABLE创建复合索引:

CREATE INDEX MULTI_INDEX ON MULTI_INDEX_TABLE(MI_USERNAME,MI_EMAIL,MI_ADDRESS);

3      第三步:灌入大量数据

利用存储过程给表MULTI_INDEX_TABLE灌入大量条数据:

DECLARE

  start_value number:=1 ;

   end_value number:=100000 ;

BEGIN         

   FOR V_count IN start_value..end_value Loop

       INSERT INTO MULTI_INDEX_TABLE VALUES(V_count ,'COB','123456','123433@SINA.COM','MA','Zhuhai,China') ;

       COMMIT ;           

   end Loop;

END;

/

4      第四步:测试索引效果

4.1      打开AUTOTRACE功能

1)        SET AUTOTRACE OFF -------------------- 不生成AUTOTRACE报告,这是缺省模式

2)        SET AUTOTRACE ON EXPLAIN --------- AUTOTRACE只显示优化器执行路径报告

3)        SET AUTOTRACE ON STATISTICS ----- 只显示执行统计信息

4)        SET AUTOTRACE ON ---------------------- 包含执行计划和统计信息

5)        SET AUTOTRACE TRACEONLY --------- set autotrace on,但是不显示查询输出

4.2      测试索引效果

输入SQL语句:

SELECT * FROM

  (SELECT a.*, rownum rownum_

   FROM (SELECT /*+index (MULTI_INDEX_TABLE MULTI_INDEX)*/ *

                FROM multi_index_table  WHERE mi_username = 'COLA') a

   WHERE rownum <= 10) b

WHERE b.rownum_ > 0;

注:该SQL语句可能无法直接执行,需先将其复制到文本文档中并删除空白行,再复制执行即可。

 

由于开启了AUTOTRACE,执行SQL语句时显示主要是执行计划和统计信息:

返回的执行计划:

----------------------------------------------------------

Plan hash value: 2358119074

--------------------------------------------------------------------------------

-------------------

| Id  | Operation                     | Name              | Rows  | Bytes | Cost

 (%CPU)| Time     |

--------------------------------------------------------------------------------

-------------------

|   0 | SELECT STATEMENT              |                   |    10 |   590 |

2   (0)| 00:00:01 |

|*  1 |  VIEW                         |                   |    10 |   590 |

2   (0)| 00:00:01 |

|*  2 |   COUNT STOPKEY               |                   |       |       |

       |          |

|   3 |    TABLE ACCESS BY INDEX ROWID| MULTI_INDEX_TABLE |   187K|  8417K|

2   (0)| 00:00:01 |

|*  4 |     INDEX RANGE SCAN         | MULTI_INDEX       |   187K|       |

1   (0)| 00:00:01 |

--------------------------------------------------------------------------------

-------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   1 - filter("B"."R">0)

   2 - filter(ROWNUM<=10)

   4 - access("MI_USERNAME"='COLA')

Note

-----

   - dynamic sampling used for this statement

从返回的执行计划可知:

|*  4 |     INDEX RANGE SCAN         |MULTI_INDEX       |   187K|       |

1   (0)| 00:00:01 |

表达执行该SQL语句时,使用了创建的复合索引MULTI_INDEX

4 - access("MI_USERNAME"='COLA')

表达执行该SQL语句时,字段MI_USERNAME使用索引匹配。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为手机激活总显示系统繁忙怎么办 华为荣耀7i进水了不开机怎么办 华为荣耀手机进水了怎么办开不开机 华为畅享5s变砖怎么办 我的苹果7机身内存满了怎么办 小米5x拆机后屏幕翘边怎么办 苹果手机设备禁止游戏登入怎么办 苹果7plus玩游戏掉频怎么办 孕期牙套子掉了基牙烂掉了怎么办 美团绑定的信用卡过期了怎么办 苹果6s手机开不开机怎么办 换了散热硅胶后还是死机怎么办 华为畅享6s掉啦怎么办 透明塑料壳被太阳晒的发黄怎么办 新买的手机壳有味道怎么办 刚买的手机壳有异味怎么办 bjd 光油把妆蹭掉了一点怎么办 软皮套手机壳如果大了怎么办 苹果手机自带相机拍照会晃屏怎么办 苹果x手机壳拆不下来怎么办 苹果手机5c屏幕没有反应怎么办 玩穿越火线屏幕两边是黑的怎么办? 8g内存只有2g可用怎么办? 三星7e微信分身打不开怎么办? 光猫的网口1不亮怎么办 两年前的发票发现名头有错误怎么办 苹果5s手机通话声音小怎么办 华为全网通手机电信卡打不了怎么办 合约机移动违约不返话费我该怎么办 电信手机卡合约套餐要到期了怎么办 苹果6s联通4g网速慢怎么办 营业厅买到的不是全网通手机怎么办 全网通手机联通卡被禁用怎么办 红米5手机关机充电自动开机怎么办 华为平板怎么解锁密码忘了怎么办 华为荣耀手机开锁密码忘记了怎么办 畅玩7x密码忘了怎么办 过了时的手机没有刷机包怎么办? 刷了个刷机包游戏玩不了了怎么办? 华为麦芒5手机外放声音小怎么办 微信显示存储卡已拔出怎么办