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

ytcx_lt_82 2011-10-05 10:39:45
一个多表查询,oralce根据什么规则选择连接方式的,
也就是说写多表查询里怎么预判是选择哪种连接方式,嵌套循环连接,hash连接,还是排序合并连接,是可以人为控制,
还是根据表的数据量,索引等条件由优化器自动选择?
...全文
131 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
NLP爱好者 2011-10-18
  • 打赏
  • 举报
回复

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=''

Northgale 2011-10-18
  • 打赏
  • 举报
回复
cbo,rbo这两个问题搞清楚了没?
dawugui 2011-10-06
  • 打赏
  • 举报
回复
我觉得你问的这个问题得根据具体情况而定,而不是千篇一律,况且这种问题,不可能一两句话说得清楚.
Rotel-刘志东 2011-10-06
  • 打赏
  • 举报
回复
一个多表查询,oralce根据什么规则选择连接方式的,
具体选择什么连接方式具体情况而定的,(具体的连接方式左连接、右连接、内连接)具体要因情况而定的。

wangsj888 2011-10-06
  • 打赏
  • 举报
回复
建议参考一本书《oracle品悟性能优化》,分析很透彻
ytcx_lt_82 2011-10-05
  • 打赏
  • 举报
回复
为什么不是使用hash join呢
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
  • 打赏
  • 举报
回复
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=''
hao1hao2hao3 2011-10-05
  • 打赏
  • 举报
回复
连接方式,左、右、外连接可以自己指定(控制)。索引之类的要看你的索引是怎么设置的还有查询条件是怎么样的。也不是一两句能扯清的。看看有关索引的运行机制吧!当然数据库会自己优化选择最优的方式来实现查询的。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧