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;
相关文档:
比较专业,专门计算机技术电子书下载的:
www.itpub.net
www.itepub.net
www.netyi.net/in.asp?id=daotong
www.chmpdf.com
相对不太专业的,内容也非常丰富
www.infoxa.com
www.xpbook.com
这些网站几乎可以找到你想要的全部书籍。 ......
1、set linesize 100; 设置长度
2、set pagesize 30; 设置每页显示数目
3、em a.sql 打开记事本
4、@ a 执行文件a中的代码,可指定文件的路径 @d:a.txt ......
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
......
如何远程判断Oracle数据库的安装平台
select * from v$version;
查看表空间的使用情况
select sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
group by tablespace_name;
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES ......
Most of admins neglect setting password on TNSlsnr Clients for Oracle databases. Oracle ensures that you can either connect to TNSlsnr on a localhost or through mapping to a remote Oracle database using .ora files.
This is not the case anymore Based on Jwa perl client.
This client is a FULL clie ......