多表连接连接方式的选择问题
时间:2011-10-05
来源:互联网
一个多表查询,oralce根据什么规则选择连接方式的,
也就是说写多表查询里怎么预判是选择哪种连接方式,嵌套循环连接,hash连接,还是排序合并连接,是可以人为控制,
还是根据表的数据量,索引等条件由优化器自动选择?
也就是说写多表查询里怎么预判是选择哪种连接方式,嵌套循环连接,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=''
/*+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
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28