分页查询
select t2.* from (select t1.*,rownum rn from(select * from 表名 where 条件) t1 where rn<= 结束行编号) t2 where t1.rn>= 开始行编号;
理解:
第一步:首先将所有行加载到内存,这一步最好不要添加条件,听韩顺平老师的课时他说可以添加条件,自己觉得不太对,猜想本步应该是将所有数据加载到内存中,添加条件时会降低效率,可以先全部加载增加一步添加条件。暂时使用老师讲的,后面再做验证。
select * from 表名 where 条件
第二步:限制结束行编号
select t1.*,rownum rn from(select * from 表名 where 条件) t1 where rn<= 结束行编号~~~
第三步:限制开始行
~~~sql
select t2.* from (select t1.*,rownum rn from(select * from 表名 where 条件) t1 where rn<= 结束行编号) t2 where t1.rn>= 开始行编号 ;
快捷建表/复制表结构与数据
create table 表名 as select 列名1,列名2... from 表名;
自我复制
当需要对某个sql语句进行效率测试,可使用该方法产生大量数据。
insert into 表1 (列名1,列名2... ) values ( select 列名1,列名2... from 表1);