如何快速建立自己的大数据库进行大数据测试一(解答)

  先说一下为什么会有这样的测试:年前面试一家电信公司,主考orcale (java的基础),说用ssh,但不用hibernet,,没有过,回来想想.此类公司应该是查询数据量大,才不用H结构,效率第一, 马上要开始找工作了,好好的实习一下数据库的基础:

复习分组函数:

select row_number() over(order by d.mgr) dmgr,d.mgr,empno,ename,sysdate,round(d.avgsal) from emp e ,(select mgr,avg(sal) avgsal from emp
group by mgr) d where e.mgr=d.mgr and e.sal>d.avgsal order by e.empno;


 先建一个emp表.以后调试等文章都以此表数据为基础:

名称        空值       类型                 
--------- -------- ------------------
EMPNO     NOT NULL NUMBER(10)         
ENAME              VARCHAR2(255 CHAR)
MGR                NUMBER(10)         
SAL                FLOAT(126)         
HIREDATE           DATE               
MARRY              CHAR(1 CHAR)       
LOGINTIME          TIMESTAMP(6)  

建立自增长序列并插入少量数据,我先插入五条:

create sequence seq_emp start with ?;

insert into emp2 values(seq_emp.nextval,'mi ff',32,1026,sysdate,'1',sysdate);

利用自己表单表复制 几何倍增.几秒即有自己的大数据:不过最好是先复制一个表来保存原始数据:

用上查找id不大于3的题.

create table emp2 as select * from emp where empno < 3;
--也可以用:
create table emp3 as(select distinct * from emp2);

--以下为主要几何自复制数据代码:
insert into emp2 new(select * from emp2);
82 行已插入。
19 行已插入。
19 行已插入。
202 行已插入。
404 行已插入。
808 行已插入。
1,616 行已插入。
3,232 行已插入。
6,464 行已插入。
12,928 行已插入。
25,856 行已插入。
51,712 行已插入。
也可以将别的表的字段复制过来,以增加多点原始数据:

insert into emp2(empno,ename,logintime) select id,name,creatime from cost;

轻松得20万数据为例:


--.执行SQL语句删除重复记录 not in 与 != 时间相同
delete from emp2 a where a.rowid not in(select max(b.rowid) from emp2 b where a.empno=b.empno and a.ename=b.ename);
delete from emp2 a where a.rowid !=(select max(b.rowid) from emp2 b where a.empno=b.empno and a.ename=b.ename);

如此测试时间将近20秒,视个人电脑定:

数据越大,删除越慢!

那有没有更快的方法呢?   在删除的时候,大家看到是边查边删.这里优化一下.

建立两个表emp emp2的索引:  关联索引与单列索引  我又另建了两张表emp4

--对于表A,表B 的radecode, fundkey, pubdate建集合索引,对表B的dataid建立索引
create index idx_emp2 on emp2(ename,empno);
create index idx_emp41 on emp4(ename,empno);
create index idx_emp4 on emp4(maxid);

好.三个索引做好之后再运行 以上删除代码:

delete from emp2 a where a.rowid not in(select max(b.rowid) from emp2 b where a.empno=b.empno and a.ename=b.ename);
delete from emp2 a where a.rowid !=(select max(b.rowid) from emp2 b where a.empno=b.empno and a.ename=b.ename);

我这里再调试效果明显,至少节省一半时间,可能是数据不够多,.不知道朋友们试过之后删除是多少时间.

我也不多做调试了,过多会影响电脑寿命.


下一章将复习存储过程 /plSql






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值