我的Oracle安装好后,没有做任何优化的情况下,现有三张表进行联合查询,查询SQL如下:
select * from tableA a,tableB b,tableC c
where a.COMPID=b.COMPID and a.OBJID=b.OBJID and a.OBJID = c.OBJID tableA,tableB ,tableC 无主键,无索引,无关联现在的问题是,当三张表中的数据量比较大时,10000条左右
以上查询就死住了,等待很长时间也无结果返回。
将数据量变小为100条数据,查询正常返回结果。我采取了建索引的方法,在tableA的COMPID和OBJID,tableB的COMPID,tableC的OBJID上建立了索引,
但是仍然在大数据量的情况下无法查询。同样的大数据下查询,在SQL Server上则没有问题。请问是Oracle的优化问题么?该如何解决这个问题呢?
select * from tableA a,tableB b,tableC c
where a.COMPID=b.COMPID and a.OBJID=b.OBJID and a.OBJID = c.OBJID tableA,tableB ,tableC 无主键,无索引,无关联现在的问题是,当三张表中的数据量比较大时,10000条左右
以上查询就死住了,等待很长时间也无结果返回。
将数据量变小为100条数据,查询正常返回结果。我采取了建索引的方法,在tableA的COMPID和OBJID,tableB的COMPID,tableC的OBJID上建立了索引,
但是仍然在大数据量的情况下无法查询。同样的大数据下查询,在SQL Server上则没有问题。请问是Oracle的优化问题么?该如何解决这个问题呢?
where a.COMPID=b.COMPID and a.OBJID=b.OBJID and a.OBJID = c.OBJID
改成这样试试
用索引不如full scan.
也许修改一下优化策略考虑一下:
ALTER SESSION SET OPTIMIZER_MODE=first_rows_100 (或者是first_rows_10).
不过你的系统得支持9i以上.8i或者8i之前的我不了解.
又拿SQLSERVER来比