difference among in, exists, =

 

in,exists,=

in是把外表和内表作hash 连接

exists是对外表作loop循环,每次loop循环再对内表进行查询

name in ('a','b','c')  <==> name='a' or name='b' or name='c'

 

better performance:

1. in小表

select * from 大表 where column1 in (select column1 from 小表)

2. exists大表

select * from 小表 where exists (select column1 from 大表 where column=小表.column)

3. 相等

两个表大小相当,那么用in和exists差别不大

 

临时表

1. Oracle中的临时表是全局的,每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的

2. SQL临时表是一种”内存表”,表是存储在内存中的

本地临时表的名称以单个数字符号 (#) 打头,它们仅对当前的用户连接是可见的,当用户从SQL实例断开连接时被删除。

全局临时表的名称以数学符号(##) 打头,创建后对任何用户都是可见的,所有引用该表的用户从 SQL断开连接时被删除。

FOR EXAMPLE:

SELECT column1, column2 INTO #tmpTable FROM xxxTable

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值