社区
Oracle 高级技术
帖子详情
多表连接连接方式的选择问题
ytcx_lt_82
2011-10-05 10:39:45
一个多表查询,oralce根据什么规则选择连接方式的,
也就是说写多表查询里怎么预判是选择哪种连接方式,嵌套循环连接,hash连接,还是排序合并连接,是可以人为控制,
还是根据表的数据量,索引等条件由优化器自动选择?
...全文
131
9
打赏
收藏
多表连接连接方式的选择问题
一个多表查询,oralce根据什么规则选择连接方式的, 也就是说写多表查询里怎么预判是选择哪种连接方式,嵌套循环连接,hash连接,还是排序合并连接,是可以人为控制, 还是根据表的数据量,索引等条件由优化器自动选择?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
连接方式,左、右、外连接可以自己指定(控制)。索引之类的要看你的索引是怎么设置的还有查询条件是怎么样的。也不是一两句能扯清的。看看有关索引的运行机制吧!当然数据库会自己优化选择最优的方式来实现查询的。
【SQL】—
多表
查询的几种
连接
方式
前言 最近在项目中用到
连接
查询,
连接
查询是关系数据中最主要的查询,包括内
连接
、外
连接
等。通过
连接
运算符可以实现多个表查询。下面来复习一下。 正文
连接
查询主要分为三种:内
连接
、外
连接
、交叉
连接
。 内
连接
使用比较运算符(包括=、>、、>=、 和! 关键字 INNER JOIN 等值
连接
/相等
连接
使用”=”关系将表
连接
mysql数据库的
多表
连接
方式
_详解数据库
多表
连接
查询的实现方法
详解数据库
多表
连接
查询的实现方法通过
连接
运算符可以实现多个表查询。
连接
是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过
连接
操作查询出存放在多个表中的不同实体的信息。
连接
操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通...
多表
连接
(等值
连接
)
#
连接
查询 /* 概念:查询的字段来自于多个表 语法: select 字段1,字段2 from 表1,表2 【where
连接
条件】 笛卡尔乘积: 产生原因:没有加
连接
条件,导致结果为 表1 的行数*表2 的行数 解决方法:添加上有效的myemployees 分类: 一、传统模式的
多表
连接
等值
连接
(where)——非等值
连接
二、sql99推出的标准,使用join关键字实现
连接
内
连接
——外
连接
三、自
连接
*/ #一、传统模式的
多表
连接
#也叫等值
连接
/* 特点有 ①表的顺序没有要求 ②n表
连接
,
Oracle多种表
连接
方式
详解
一、多种表
连接
方式
内
连接
。 外
连接
。 左外
连接
(左边的表不加限制)。 右外
连接
(右边的表不加限制)。 全外
连接
(左右两表都不加限制)。 自
连接
(同一张表内的
连接
) SQL标准语法: select table1.column,table2.column from table1 [inner | left | right | full ] join table2 on table1.column1 = table2.column2; 参数释义: inner join 表示内
连接
。 left join表示
SQL
连接
表(内
连接
、左
连接
、右
连接
、交叉
连接
、全外
连接
)
连表总结 什么是
连接
表?
多表
查询原理:将多个表通过笛卡尔积形成一个虚表,再根据查询条件筛选符合条件的数据。 在关系数据库中,数据分布在多个逻辑表中。 要获得完整有意义的数据集,需要使用
连接
来查询这些表 中的数据。 SQL Server支持多种
连接
包括 INNER JOIN:内
连接
,关键字在表中存在至少一个匹配时返回行。 left join : 左
连接
,返回左表中所有的记录以及右表中
连接
字段相等的记录。 right join : 右
连接
,返回右表中所有的记录以及左表中
连接
字段相等的
Oracle 高级技术
3,491
社区成员
18,714
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章