易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle 数据生成 索引

1.建表
CREATE TABLE qq(
       qq_num integer
);
2.插入数据
插入数据的方法有很多种,但是要插入3亿数据,必须要有高效的算法。在插入数据时我用了最笨的办法,采用PL/SQL利用流程控制的LOOP语句插入。同时我也看了网上的插入效率的优化,怎样利用较少的时间生成较多的测试数据。给我印象深刻的是利用种子表来生成较多的数据。
这样做的好处是本身数据就在本地磁盘,减少了存取的I/O操作,数据生成较快。
我采用最笨的办法利用8小时生成了2亿多条数据记录。
3.索引的建立
由于已存在的记录有2亿条,采用CREATE INDEX qq_num_index ON qq(qq_num);耗费时间近1小时。
索引的好处:查询效率提高,索引相关的“填充因子”。
count()函数始终不走索引,都是全盘扫描,还未找到解决办法。也就是以下PL/SQL执行的时间在建立索引前后是一样的。
DECLARE
count_num NUMBER;
BEGIN
dbms_output.put_line('语句执行开始时间:'||systimestamp);
SELECT COUNT(qq_num) INTO count_num from qq WHERE qq_num IS NOT NULL;
dbms_output.put_line('结果:'||count_num);
dbms_output.put_line('语句执行结束时间:'||systimestamp);
END;
/
但是建立索引后,SELECT MAX(qq_num) 和其他相关的语句的执行时间立即减少了很多。
以下是代码:
DECLARE
count_num NUMBER;
BEGIN
dbms_output.put_line('语句执行开始时间:'||systimestamp);
SELECT MAX(qq_num) INTO count_num from qq;
dbms_output.put_line('结果:'||count_num);
dbms_output.put_line('语句执行结束时间:'||systimestamp);
END;
/
建立索引前:执行时间为1分7秒,索引后0.2秒内完成。
建立索引是以存储空间为代价换取时间效率的提高。
这当中有autotrace可以自动显示SQL语句的执行计划,这种查看必须在SQL *PLUS下.
开启autotrace的步骤如下:
--DBA初次必须执行
CREATE ROLE plustrace;--需要拥有权限
GRANT SELECT ON v_$sesstat TO plustrace;--需要有GRANT权限
GRANT SELECT ON v_$mystat TO plustrace;
GRANT SELECT ON v_$statname TO plustrace;
--开启自动跟踪
SET AUTOTRACE ON;


相关文档:

oracle行列转换(转)

1、固定列数的行列转换

student subject grade
--------- ---------- --------
student1 语文 80
student1 数学 70
student1 英语 60
student2 语文 90
student2 数学 80
student2 英语 100
……
转换为
语文 数学 英语
student1 80 70 60
student2 90 80 100
……
语句如下:s ......

Oracle的同义词(synonyms)总结

oracle的同义词总结:
  从字面上理解就是别名的意思,和试图的功能类似。就是一种映射关系。
  1.创建同义词语句:
  create public synonym table_name for user.table_name;
  其中第一个user_table和第二个user_table可以不一样。
  此外如果要创建一个远程的数据库上的某张表 ......

oracle cursor 游标用法

游标:
用来查询数据库,获取记录集合(结果集)的指针,可以让开发者一次访问一行结果集,在每条结果集上作操作。
分类:
静态游标:
分为显式游标和隐式游标。
REF游标:
是一种引用类型,类似于指针。
显式游标:
 CURSOR 游标名 ( 参数 ) [返回值类型] IS
  Select 语句
生命周期:
1.打开游标(OP ......

Oracle数据库提高命中率及相关优化

1)Library Cache的命中率:
.计算公式:Library Cache Hit Ratio = sum(pinhits) / sum(pins)
SQL>SELECT SUM(pinhits)/sum(pins)    from V$LIBRARYCACHE; 
通常在98%以上,否则,需要要考虑加大共享池,绑定变量,修改cursor_sharing等参数。
2)计算共享池内存使用率:
SQL>SELECT ......

Using Oracle Trace Analyzer (trcanlzr.sql)


Using Oracle Trace Analyzer (trcanlzr.sql)
Dave Moore:  Author of Oracle Utilities
Oracle has provided another utility initially designed for performance tuning Oracle Applications.  Trace Analyzer is provided in the form of a PL/SQL package (TRCA$ ).  The Trace Analyzer utility i ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号