|
好,现在可以运行我提出的那种SQL语句了:
select b.big_id, b.small_id, b.bvalue, b.txn_date, s.stype
from BIG b, small s
where s.small_id = b.small_id
and b.TXN_DATE > to_date('20070101','yyyymmdd')
and b.TXN_DATE < to_date('20070121','yyyymmdd')
and s.stype = 'TY2'
Plan Cardinality Bytes Cost
SELECT STATEMENT ALL_ROWS 1,138 36,416 566
6 HASH JOIN 6 1,138 6 36,416 6 566
4 VIEW VIEW TEST.index$_join$_002 4 133 4 1,197 4 3
3 HASH JOIN 3 3 3
1 INDEX RANGE SCAN INDEX TEST.NDX_SMALL_TYPE 1 133 1 1,197 1 1
2 INDEX FAST FULL SCAN INDEX (UNIQUE) TEST.PK_SMALL 2 133 2 1,197 2 1
5 TABLE ACCESS FULL TABLE TEST.BIG 5 3,423 5 78,729 5 563
执行计划跟我预期的有点不同,但确实没有从大表的 TXN_DATE 这个字段入手...
但在这个试验的例子里,可能是因为数据量不够大,表不够复杂,所以先从BIG表查还是先从SMALL表查,区别不大,前者速度稍微快一点点。但在我的实际项目环境中,查询速度差别可以达到2个数量级...
|
|