Oracle 性能优化

2025-04-11 17:36:22
推荐回答(1个)
回答1:

尝试下下面的方法;
1、测试你create table xx nologging as select 所有结果集所用的时间,如果这个时间在你可接受的范围之内的话,你就分两步进行 先创建这表,然后从这个表插入到你想要的表里面
2、如果创建表的时间很短,但是插入的时间很长,应该是数据库的临时表空间太小了(lz的select的语句需要排序会需要很多表空间的)解决的办法是增加临时表空间;当然如果没有条件的话,就对于xx表在生成的时候增加一个字段根据rownum分组 比如 1-5000条这个字段是1 5001-10000这个字段是2 ,然后写一个存储过程根据这个字段的值 分批次插入,好处是分批次提交,减少临时表空间的占用,也可以解决假死的问题;

那这个问题就是select语句的问题了,只能从sql语句上优化下了

select 语句的话 mfo.dir_lbr@hfdb 这个你是通过DBlink去访问远程数据库吗 为什么都要加@

如果是远程访问的话 建议可以对这几张表在远程做一个视图(可以是查询结果集的视图),然后这边只要查询这个视图,应该会快点,注意远程视图是用不到索引的