随笔分类 -  Oracle.千万级表

1
摘要:代码: package com.hy.lab.tenmillion; import java.sql.*; import java.util.ArrayList; import java.util.List; public class BigTbBuilder { private static fi 阅读全文
posted @ 2022-06-07 23:23 逆火狂飙 阅读(100) 评论(2) 推荐(0) 编辑
摘要:这个类是我用来做数据迁移测试的,里面把删表、建表、充值都融合到了一起,字段采用f1,f2,f3...fn的方式递增,字段类型除id外都是nvarchar2,填充的都是固定数据,大家拿下去后可以根据自己的需求修改。 速度方面,在我的老伙计T440p上, 如果是31个字段,一千万条数据,用BATCH_S 阅读全文
posted @ 2022-03-22 21:13 逆火狂飙 阅读(222) 评论(1) 推荐(0) 编辑
摘要:【实验硬件环境】 T440p 【数据库环境】 Oracle10g,win版 【目标表】 create table emp3( id number(12), name nvarchar2(20), age number(3), primary key(id)) 【百万程序】 package com.h 阅读全文
posted @ 2022-03-13 22:28 逆火狂飙 阅读(992) 评论(0) 推荐(0) 编辑
摘要:对于大数据量插入Oracle数据库的场合,可以采用批量插入语法。 比如有一个emp表,有id,name,age三个字段, 其单条插入语法是:insert into emp(id,name,age) values('1','andy','25') 其批量插入语法是 insert all into em 阅读全文
posted @ 2022-03-10 11:32 逆火狂飙 阅读(912) 评论(1) 推荐(0) 编辑
摘要:【数据库版本】Oracle11g 【硬件】Thinkpadt440p 以下是详细步骤,其中主键规整设定两步可以按需求调整。 【建初始表 秒出】 create table emp_init( id number(12), name varchar2(20), age number(3), salary 阅读全文
posted @ 2022-03-09 06:05 逆火狂飙 阅读(441) 评论(0) 推荐(0) 编辑
摘要:执行语句: -- tag表结构create table tag( id number(12), name nvarchar2(20), primary key(id) ) -- tag充值 insert into tag select rownum, dbms_random.String('*',d 阅读全文
posted @ 2022-01-29 19:53 逆火狂飙 阅读(113) 评论(0) 推荐(0) 编辑
摘要:前作:https://www.cnblogs.com/heyang78/p/12496028.html 里谈到了如何用笛卡尔积来创建一千陆佰万大表,但过程还可以更短些,现总结如下: 1.准备基本表 create table emp( id int, name nvarchar2(20), age i 阅读全文
posted @ 2021-09-07 19:11 逆火狂飙 阅读(188) 评论(1) 推荐(0) 编辑
摘要:本文例程下载:https://files.cnblogs.com/files/heyang78/myBank210905_1834.rar Oracle其实是全方位领先于同时期的MySQL,但在批量插入速度上被Linux版的MySQL给比下去了。另外Windows 5.X版的MySql别这样插值,有 阅读全文
posted @ 2021-09-05 18:34 逆火狂飙 阅读(471) 评论(0) 推荐(0) 编辑
摘要:对一个唯一主键为id,包括名称和部门id及其他共20个字段的表,答案是7秒左右,以下是执行情况: SQL> select count(*),deptid from tb_16million2 group by deptid; COUNT(*) DEPTID 768000 5 860000 8 848 阅读全文
posted @ 2021-08-12 11:07 逆火狂飙 阅读(144) 评论(2) 推荐(0) 编辑
摘要:表结构: create table hy_emp( id integer, name nvarchar2(20) not null, age integer not null, salary integer not null, cdate date not null) 注意这里没有设定主键,目的是插 阅读全文
posted @ 2020-04-03 10:51 逆火狂飙 阅读(386) 评论(0) 推荐(0) 编辑
摘要:从一月至今,我总共归纳了三种创建千万级大表的方案,它们是: 下面是这三种方案的对比表格: # 名称 地址 主要机制 速度 1 在Oracle中十分钟内创建一张千万级别的表 https://www.cnblogs.com/heyang78/p/12169527.html connect by+Inse 阅读全文
posted @ 2020-03-15 13:37 逆火狂飙 阅读(1009) 评论(2) 推荐(0) 编辑
摘要:本文精简版:https://www.cnblogs.com/heyang78/p/15239683.html 昨天拙文中讲述了用自增方式创建一千六百万大表的方案,这回讨论的是用笛卡儿积,实践证明这种方案更快. 2020年3月15日08点58分实验开始 创建仅有四千数据的tb_4thousand1表: 阅读全文
posted @ 2020-03-15 09:34 逆火狂飙 阅读(484) 评论(1) 推荐(0) 编辑
摘要:2020年3月14日19点16分开始 创建两百万中间表: SQL> CREATE TABLE tb_2million 2 ( 3 id NUMBER not null primary key, 4 name NVARCHAR2(60) not null, 5 salary int NOT NULL, 阅读全文
posted @ 2020-03-14 20:11 逆火狂飙 阅读(204) 评论(0) 推荐(0) 编辑
摘要:工作有个给某表某字段添加一段文本的SQL,目的是隐藏用户信息,因表达两千万行耗时较多,当时觉得设上固定值效率会更高,于是有了下面的比较。 先确认下要进行实验的表规模: SQL> select count(*) from tb_qianwan_final; COUNT(*) 16000000 一千六百 阅读全文
posted @ 2020-02-22 10:23 逆火狂飙 阅读(179) 评论(0) 推荐(0) 编辑
摘要:首先看看这表里数据量: SQL> select count(*) from tb_qianwan_final; COUNT(*) 16000000 然后是添加一个备注字段: SQL> alter table tb_qianwan_final add remark nvarchar2(60); 表已更 阅读全文
posted @ 2020-02-17 20:47 逆火狂飙 阅读(2824) 评论(1) 推荐(0) 编辑
摘要:小表不会产生性能问题,大表才会。要练习SQL调优,还非得有大表不可。但数据不会自然产生,没有数据时如何创建一张千万级别的大表呢? 之前,我想用Oracle的批量插入语法去插入数据,此语法如下: INSERT ALL INTO firsttb(NAME, age,createdtime) values 阅读全文
posted @ 2020-01-09 08:52 逆火狂飙 阅读(1478) 评论(1) 推荐(0) 编辑
摘要:万以下小表做性能优化没有多大意义,因此我需要创建大表; 创建大表有三种方法,一种是insert into table selec..connect by.的方式,它最快但是数据要么是连续值,要么是随机值或是系统值,并不好用,而且总量上受到限制;另一种方法是用程序,借助Oracle的批量插值语法插入数 阅读全文
posted @ 2020-01-05 09:33 逆火狂飙 阅读(744) 评论(0) 推荐(0) 编辑
摘要:之前用create table select * from XXTable无疑是创建庞大表的最快方案之一,但是数据重复率是个问题,且数据难以操控。 于是我在之前批量插数据的基础上更新了一个类,让它具有了Resume的能力,这样可以利用碎片时间能插一点是一点。 以后此类还可能改进,先留一个版本在这里。 阅读全文
posted @ 2020-01-04 16:57 逆火狂飙 阅读(362) 评论(0) 推荐(0) 编辑
摘要:Oracle也提供了类似MySQL的批量插入语法,只是稍微别扭些,具体代码如下: package com.hy; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import 阅读全文
posted @ 2019-11-06 17:33 逆火狂飙 阅读(1766) 评论(0) 推荐(0) 编辑
摘要:oracle有个数据表现在已经有2500万条数据了,软件用到这个表的数据时就变的特别慢,所以准备把一个月以前的数据全部清除。 步骤如下(在plsql中执行) 1、首先 将这个月的数据导出到一个临时表中(这些数据是自己希望保留的) create table tempTable as select id 阅读全文
posted @ 2019-10-21 10:42 逆火狂飙 阅读(361) 评论(0) 推荐(0) 编辑

1
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示