1. 表是否作过统计了?
analyze table khdd compute statistics;
analyze table khddbh compute statistics; 然后写一个简单的测试语句,例如
select count(*) from khdd where khddbh='01'
看一下查询计划,索引是不是用上了 2. 究竟有没有必要一次取这么多数据出来???
数据库什么版本? 优化器用的是CBO,还是RBO?
如果是RBO,扫描时是自右向左,即from子句最外层的作为驱动表。 3. 两个大表连接代价是很高的,试着将嵌入查询(NESTED loop)
改为HASH JOIN,或者强制指定HINTS试试。
analyze table khdd compute statistics;
analyze table khddbh compute statistics; 然后写一个简单的测试语句,例如
select count(*) from khdd where khddbh='01'
看一下查询计划,索引是不是用上了 2. 究竟有没有必要一次取这么多数据出来???
数据库什么版本? 优化器用的是CBO,还是RBO?
如果是RBO,扫描时是自右向左,即from子句最外层的作为驱动表。 3. 两个大表连接代价是很高的,试着将嵌入查询(NESTED loop)
改为HASH JOIN,或者强制指定HINTS试试。
解决方案 »
- ◆oracle9i 存储过程返回数据集的写法?◆
- Oracle连接一个java软件(Ireport)后,想要从一张表中同时获取总人数、男生数、女生数,如何解决?
- 关于oracle临时表空间temp的问题???
- ORACLE分页sql要怎么理解会比较清楚点啊
- 那位大侠帮我提供一个子级OR的优化方案!
- 救教!~ 存储过程
- 有高手知道oracle10g 的ldap如何使用吗? 有没有相关的文檔或网址,该如何学习呢?
- 关于merge,dual
- 请问:sqlserver数据怎样导入ora数据库?
- 数据导入导出问题
- 如何判断数组中是否包含某值?
- [求助]什么情况下会出现ORA-01002:fetch out of sequence的错误
----------
1739072已用时间: 00: 00: [email protected] >select count(*) from t2; COUNT(*)
----------
196608已用时间: 00: 00: [email protected] >select count(*) from t1,t2 where t1.owner=t2.username; COUNT(*)
----------
2097152 -- 这比任何一个表得数据都多已用时间: 00: 00: 05.00Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1784 Card=1 Bytes=30)
1 0 SORT (AGGREGATE)
2 1 HASH JOIN (Cost=1784 Card=1739072 Bytes=52172160)
3 2 INDEX (FAST FULL SCAN) OF 'IND_T2' (NON-UNIQUE) (Cost=42 Card=196608 Bytes=2555904)
4 2 INDEX (FAST FULL SCAN) OF 'IND_T1' (NON-UNIQUE) (Cost=385 Card=1739072 Bytes=2956422
4)
rule 模式下的规则:1、有两个索引存在的情况下,from后面大表在前。小表(返回记录少的表,不是记录少的表)在最后,作为驱动表,Oracle处理SQL语句是从左到右2、有一个索引,则顺序无关3、都没有索引,则大表应该在后
你这查询根本用不上,哪有你这样看订单的?对于你这么大的表,建议用以下查询方法:
select *
from
(
select * from khdd where ...
) a,
(
select * from psb where ...
) b
where a.khddbh = b.khddbh这试过,这样查询,比一般的查询快了10倍左右!
原因是:它这两个子查询已经去掉很多数据,省去了大量不必要的连接
再者:最后的where它还能用到两个子查询的表的索引!
楼上说的方法就是hash join. 确实,在有些情况下,它的效率比嵌入查询高.
select * from khdd,psb where khdd.khddbh = psb.khddbh