+ -
当前位置:首页 → 问答吧 → 多表连接连接方式的选择问题

多表连接连接方式的选择问题

时间:2011-10-05

来源:互联网

一个多表查询,oralce根据什么规则选择连接方式的,
也就是说写多表查询里怎么预判是选择哪种连接方式,嵌套循环连接,hash连接,还是排序合并连接,是可以人为控制,
还是根据表的数据量,索引等条件由优化器自动选择?

作者: ytcx_lt_82   发布时间: 2011-10-05

连接方式,左、右、外连接可以自己指定(控制)。索引之类的要看你的索引是怎么设置的还有查询条件是怎么样的。也不是一两句能扯清的。看看有关索引的运行机制吧!当然数据库会自己优化选择最优的方式来实现查询的。

作者: hao1hao2hao3   发布时间: 2011-10-05

select 
/*+use hash(fact_sale,dim_city) */
* from fact_sale,dim_city where fact_sale.citycode=dim_city.city_code and dim_city.city_code=''

作者: ytcx_lt_82   发布时间: 2011-10-05

SELECT STATEMENT, GOAL = ALL_ROWS Cost=0 Cardinality=1 Bytes=261
 FILTER
  MERGE JOIN Cost=12357 Cardinality=20000100 Bytes=5220026100
  PARTITION RANGE ALL Cost=12044 Cardinality=2000010 Bytes=314001570
  TABLE ACCESS FULL Object owner=SYS Object name=FACT_SALE Cost=12044 Cardinality=2000010 Bytes=314001570
  SORT JOIN Cost=3 Cardinality=10 Bytes=1040
  TABLE ACCESS FULL Object owner=SYS Object name=DIM_CITY Cost=2 Cardinality=10 Bytes=1040

作者: ytcx_lt_82   发布时间: 2011-10-05

为什么不是使用hash join呢

作者: ytcx_lt_82   发布时间: 2011-10-05