oracle connect by level 的用法

connect by level  是oracle中一组关键字,是用来实现递归查询的,譬如说实现查询 1,2,3,4 .....n 的数字可以使用connect by level

 

SQL语句如下:

 

select level +1 from dual where connect by level <=10


这种方式可以实现查询1到n的数字,共有n行

 

前端时间开发一个会员卡入库的功能,当给出会员卡信息的开始和结束号时,在审核通过的时候要将每张卡信息都进行保存,在开始的时候使用hibernate进行保存,

在进行压力测试的时候发现如果一次性入库一百万张卡,发现会很耗时间,大概用了20分钟,这对于入库来说会很慢,要进行优化

最后发现使用connect by level 关键字可以很轻松的实现,同样是一百万张卡只用了10秒钟,速度不知快了多少 

SQL语句如下:

sql = "insert into tb_memcardinfo (MEMCARDINFO_ID,vipclass_id,vipcode,cardstatus,create_user,"
						+ "user_group,create_date,modifier,modi_date,flag,jointype,inmall_id)"
						+ " select seq_tb_memcardinfo.nextval ,"
						+ c.getVipclassId()
						+ ","
						+ c.getStartno()
						+ "+level-1,'0','"
						+ ie.getCreateUser()
						+ "','"
						+ ie.getUserGroup()
						+ "', SYSDATE,'"
						+ user.getUserAcc()
						+ "',"
						+ " SYSDATE ,0,'0',"
						+ ie.getInmallId()
						+ " from dual connect by level <= "
						+ c.getCardqty();


 

不过这只对于号码是连续的或者是有规律可循的,不然这种方式行不通
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值