日期:2014-05-18  浏览次数:20376 次

从SQLSERVER数据库中查询数据写入oracle时速度为什么那么慢?
我使用sp_addlinkedserver的方式连接到oracle数据库的,然后使用sp_addlinkedsrvlogin的方式登录的,当我用insert into oracle.table select col from table时发现写入数据的速度相当的慢,我在sql中查询数据的速度才0.001S,可是查出来的数据写入oracle数据库时,速度达到6分钟才执行完?请问这是为什么?有没有好的优化方法的?

------解决方案--------------------
慢肯定是有等待事件,可以看一下执行inser into...的进程ID的lastwaittype和waittype是什么?
SQL code

select * 
from master.dbo.sysprocesses
where spid=[进程ID]

------解决方案--------------------
1.可检查一下 insert into oracle.table select col from table 这句,
sql server的字段类型是否与oracle的字段有不兼容的, 设法调整为相同类型.

2.也可能在写入期间,oracle的目标表被锁定,所以要等待期锁定完成.

3.试试这个,不一定可行, insert into oracle.table(tablock) select col from table