Oracle随笔一

一、合理使用表链接

1、**在写sql时按照业务数据实际情况使用相应的表链接**
	Oracle中有四种常见的表链接方式,排序合并链接、循环嵌套链接,哈希链接,笛卡尔积。特性不同,使用场景也是有区别的;
2、**四种表链接方式的特性以及场景**
	A.排序合并链接(use_marge)
	  排序合并连接中是没有驱动表的概念的,两个互相连接的表按连接列的值先排序,排序完后形成的结果集再互相进行合并连接提取符合条件的记录。排序合并连接比较适用于返回大数据量的结果。排序合并连接在数据表预先排序好的情况下效率是非常高的,也比较 适用于非等值连接的情况,比如 > 、>= 、<= 等情况下的连接 (哈希连接只适用于等值连接)。由于排序操作的开销是非常消耗资源的,当结果集很大时排序合并连接的性能很差。
	B、循环嵌套链接(use_nl)
	  适用于查询的选择性强、约束性高并且仅返回小部分记录的结果集。通常要求驱动表的记录(符合条件的记录,通常通过高效的索引访问) 较少,且被驱动表连接列有唯一索引或者选择性强的非唯一索引时,嵌套循环连接的效率是比较高的。嵌套循环连接返回前几行的记录是非常快的,这是因为使用了嵌套循环后,不需要等到全部循环结束再返回结果集,而是不断地将查询出来的结果集返回。
	C、哈希链接(use_hash)
	   构建阶段:优化器首先选择一张小表做为驱动表,运用哈希函数对连接列进行计算产生一张哈希表。通常这个步骤是在内存(hash_area_size )里面进行的,因此运算很快。
	   探测阶段:优化器对被驱动表的连接列运用同样的哈希函数计算得到的结果与前面形成的哈希表进行探测返回符合条件的记录。这个阶段中如果被驱动表的连接列的值没有与驱动表连接列的值相等的话,那么这些记录将会被丢弃而不进行探测。
3、**总结**
		排序合并链接适用于有排序需求的数据、并且非等值连接的情况,比如 > 、>= 、<= 等情况;
		循环嵌套链接适用于谓词条件有效率比较好的索引,并且查询满足条件的数据出现的比较快,不需要等到满足条件的数据全部查询出来表;
		哈希链接适用于表数据量比较大,谓词条件没有合适的索引的情况。

借鉴于此篇博客,对于表链接更加详细的解释也可以查看此篇博客
http://blog.itpub.net/69949798/viewspace-2680785/

二、Oracle数据库中的临时表空间与索引表空间

 1、临时表空间是用于Oracle再进行大量数据操作时,内存不够时,存放在临时表空间。主要用来做查询和存放一些缓冲区数据,但是在我们创建用户表空间时,很少会去创建临时表空间,最近也是自己那不争气的电脑,带不动虚拟数据库服务器,才想到去创建临时表空间来提升效率。
 2、在一般情况下,我们不会为索引单独创建表空间,创建索引时,索引都会存储在用户默认的表空间下,有需要的情况下,也可以创建并指定独立的索引表空间。

但是对于Oracle的内存以及内存体系还不是很清楚,在后续了解之后再记录在随笔中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值