Oracle 数据生成 索引

来源:互联网 发布:网络用语粽子什么意思 编辑:程序博客网 时间:2024/05/16 13:59

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执行的时间在建立索引前后是一样的。

但是建立索引后,SELECT MAX(qq_num) 和其他相关的语句的执行时间立即减少了很多。

以下是代码:

建立索引前:执行时间为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;

 

原创粉丝点击