各位老师,我在oracle里创建了一张临时表,写了一条查询语句,单独执行查询语句速度非常快,不到1秒钟数据集就出来了
大概有70多条数据,但是如果把这些数据insert到临时表速度非常慢,大概200秒。
比如
查询的语句为 select c1,c2 from tb 速度非常快,不到1s
插入的语句为 into temp_tb(c1,c2) select c1,c2 from tb 速度非常慢200s(注释:temp_tb表没有索引,没有触发器等)
我尝试用create table tb1 as select select c1,c2 from tb 也非常慢,大概也是200s。
我又复制了一份temp_tb表结构,创建一张表tb1,插入tb1也是非常慢。
我又测试了,单独insert into temp_tb values()速度非常快
insert into temp_tb select 'a','b' from dual 也非常快
insert into temp_tb select 'a','b' from tb where 0=0 也非常快.
大概有70多条数据,但是如果把这些数据insert到临时表速度非常慢,大概200秒。
比如
查询的语句为 select c1,c2 from tb 速度非常快,不到1s
插入的语句为 into temp_tb(c1,c2) select c1,c2 from tb 速度非常慢200s(注释:temp_tb表没有索引,没有触发器等)
我尝试用create table tb1 as select select c1,c2 from tb 也非常慢,大概也是200s。
我又复制了一份temp_tb表结构,创建一张表tb1,插入tb1也是非常慢。
我又测试了,单独insert into temp_tb values()速度非常快
insert into temp_tb select 'a','b' from dual 也非常快
insert into temp_tb select 'a','b' from tb where 0=0 也非常快.
解决方案 »
- 在线等 !急!反洗钱系统的映射转换问题
- ◎◎◎◎ 一个存有 bfile 数据的表的同步/迁移?????
- 请教一个查询语句
- 如何通过存储过程计算一条SQL语句执行时间?
- oracle导入Excle表时出现"正在导入时错误"
- 有没有代替in的sql语句?
- select * from table wehere name=null 为什么查不到 name列为空的数据
- varchar(size)会不会真的占用空间?
- 请教一个小问题?
- 初手请教:(1)如何判断一个变量是否为null?(2)如何取得指定日期中的天数?
- oracle查询中一个超级郁闷的问题,急啊!!!
- oracle9I的DMP数据备份文件能还原到ORACLE7上么?
如果两张表结构相同,你用insert into temp_tb select * from tb 试试看插入全部数据会不会有这样的问题
原语句是这样的
select * from t1
inner join t2 on t1.c1=t2.c1
where t1.c1=1 and exists (select * from t3 where t1.c1=t3.c1)
这句查询时很快,但在前面加上inert into 后就很慢
后来我这样修改的,在前面加insert into 就很快了。
select * from t1
inner join t2 on t1.c1=t2.c1
where t1.c1=1 and exists(select * from t3 where t3.c1=1)
是t1.c1=t3.c1 还是 t3.c1=t1.c1
不知哪个快,下次再测试下。