ITPub博客

首页 > 数据库 > Oracle > 课程实践(二)续

课程实践(二)续

原创 Oracle 作者:luisedalian 时间:2014-01-20 09:06:21 0 删除 编辑
案例十四

点击(此处)折叠或打开

  1. --shc_setup.sql
  2. SET ECHO ON

  3. DROP CLUSTER cluster_bigemp INCLUDING TABLES;
  4. CREATE CLUSTER cluster_bigemp
  5. (
  6.   deptno NUMBER,
  7.   sal NUMBER SORT
  8. )
  9. HASHKEYS 10000
  10. SINGLE TABLE HASH IS deptno SIZE 50
  11. TABLESPACE USERS;

  12. CREATE TABLE fact_bigemp
  13. (
  14.   empno NUMBER PRIMARY KEY,
  15.   sal NUMBER SORT,
  16.   job VARCHAR2(12) NOT NULL,
  17.   deptno NUMBER NOT NULL,
  18.   hiredate DATE NOT NULL
  19. )
  20. CLUSTER cluster_bigemp(deptno, sal);

  21. BEGIN
  22.   FOR i IN 1..1400000 LOOP
  23.     INSERT INTO fact_bigemp VALUES(i, i, \'J1\', 10, SYSDATE);
  24.   END LOOP;
  25.   COMMIT;
  26. END;
  27. /

  28. BEGIN
  29.   FOR i IN 1..1400000 LOOP
  30.     INSERT INTO fact_bigemp VALUES(1400000 + i, i, \'J1\', 20, SYSDATE);
  31.   END LOOP;
  32.   COMMIT;
  33. END;
  34. /

  35. EXEC dbms_stats.gather_schema_stats(\'SH\');

  36. --query15.sql
  37. --脚本会减少会话可以使用的内存量. 优化程序决定使用簇访问路径来检索数据.成本最低.
  38. SET ECHO ON
  39. SET TIMING ON
  40. SET AUTOTRACE TRACEONLY
  41. SET PAGESIZE 1000
  42. ALTER SESSION SET WORKAREA_SIZE_POLICY=MANUAL;
  43. ALTER SESSION SET SORT_AREA_SIZE=50000;
  44. @flush.sql

  45. SELECT * FROM fact_bigemp where deptno = 10;

  46. SET TIMING OFF
  47. SET AUTOTRACE OFF

  48. --执行query15.sql
  49. sh@TESTDB11>@query15.sql


点击(此处)折叠或打开

  1. --query16.sql
  2. --脚本会减少会话可以使用的内存量. 执行与上一例相同的查询,但要求基于已经排序的sal列为结果排序.
  3. --优化器使用簇索引,不执行排序操作. 成本最低.
  4. SET ECHO ON
  5. SET TIMING ON
  6. SET AUTOTRACE TRACEONLY
  7. SET PAGESIZE 1000
  8. ALTER SESSION SET WORKAREA_SIZE_POLICY=MANUAL;
  9. ALTER SESSION SET SORT_AREA_SIZE=50000;
  10. @flush.sql

  11. SELECT * FROM fact_bigemp where deptno = 10 ORDER BY sal;

  12. SET TIMING OFF
  13. SET AUTOTRACE OFF

  14. --执行query16.sql
  15. sh@TESTDB11>@query16.sql

点击(此处)折叠或打开

  1. --query17.sql
  2. --脚本减少会话可以使用的内存量. 执行与上一例相同的查询,但要求基于已经排序的sal列以降序为结果排序.
  3. --优化器使用簇索引,不执行排序. 成本最低.
  4. SET ECHO ON
  5. SET TIMING ON
  6. SET AUTOTRACE TRACEONLY
  7. SET PAGESIZE 1000
  8. ALTER SESSION SET WORKAREA_SIZE_POLICY=MANUAL;
  9. ALTER SESSION SET SORT_AREA_SIZE=50000;
  10. @flush.sql

  11. SELECT * FROM fact_bigemp where deptno = 10 ORDER BY sal DESC;

  12. SET TIMING OFF
  13. SET AUTOTRACE OFF

  14. --执行query17.sql
  15. sh@TESTDB11>@query17.sql

点击(此处)折叠或打开

  1. --query18.sql
  2. --脚本减少会话可以使用的内存量. 执行与上一例相同的查询,此次要求基于未排序的empno为结果排序.
  3. --优化器使用簇索引,但必须排序数据,排序导致查询成本上升.
  4. SET ECHO ON
  5. SET TIMING ON
  6. SET AUTOTRACE TRACEONLY
  7. SET PAGESIZE 1000
  8. ALTER SESSION SET WORKAREA_SIZE_POLICY=MANUAL;
  9. ALTER SESSION SET SORT_AREA_SIZE=50000;
  10. @flush.sql

  11. SELECT * FROM fact_bigemp where deptno = 10 ORDER BY empno;

  12. SET TIMING OFF
  13. SET AUTOTRACE OFF

  14. --执行query18.sql
  15. sh@TESTDB11>@query18.sql



点击(此处)折叠或打开

  1. --query19.sql
  2. --脚本减少会话可以使用的内存量. 执行与上一例相同的查询,此次要求基于sal, empno键对结果进行排序
  3. --优化器使用簇索引,但必须排序数据,排序导致查询成本上升.
  4. SET ECHO ON
  5. SET TIMING ON
  6. SET AUTOTRACE TRACEONLY
  7. SET PAGESIZE 1000
  8. ALTER SESSION SET WORKAREA_SIZE_POLICY=MANUAL;
  9. ALTER SESSION SET SORT_AREA_SIZE=50000;
  10. @flush.sql

  11. SELECT * FROM fact_bigemp where deptno = 10 ORDER BY sal, empno;

  12. SET TIMING OFF
  13. SET AUTOTRACE OFF

  14. --执行query19.sql
  15. sh@TESTDB11>@query19.sql


点击(此处)折叠或打开

  1. --清理环境
  2. DROP CLUSTER cluster_bigemp INCLUDING TABLES;



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

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    5642207