SQL之JOIN总

[b]LEFT JOIN[/b]
[list]
[*][color=olive]1、对符合on条件的“左表”和“右表”做笛卡儿积返回[/color]
[*][color=olive]2、返回不符合on条件的“左表”行,其中的“右表”值全返回null[/color]
[*]注:以左表为准
[/list]
[b]RIGHT JOIN[/b]
[list]
[*][color=olive]1、对符合on条件的“右表”和“左表”做笛卡儿积返回[/color]
[*][color=olive]2、返回不符合on条件的“右表”行,其中的“左表”值全返回null[/color]
[*]注:以右表为准
[/list]
[b]下面3个都是只对符合on条件的左右表做笛卡儿积返回[/b]
[list]
[*][color=olive]INNER JOIN[/color]
[*][color=olive]FULL JOIN[/color]
[*][color=olive]CROSS JOIN[/color]
[/list]

[b]附:SQL优化总结:[/b]
[list]
[*][color=olive]1、不要在索引上使用函数(包括计算、not),如使用将不会使用索引,转为全表扫描[/color]
[*][color=olive]2、用 >= 替代 > 如: >=4 代替 >3[/color]
[*][color=olive]3、用 in 替代 or[/color]
[*][color=olive]4、用 exists 替代 in 和 distinct[/color]
[*][color=olive]5、用 where 替代 having[/color]
[*][color=olive]6、尽量避免用 * ,因为sql解析中要把 * 全部转为列名,这需要费时的查询一次数据字典[/color]
[*][color=olive]7、计算记录条数: count(索引) 速度上大于 count(*)[/color]
[*][color=olive]8、Oracle解析sql语句会全部转换为大写,所以sql语句尽量用大写[/color]
[*][color=olive]9、Oracle采用自下而上的顺序解析where字句,所以尽量把能过滤最大数量记录的条件写在where字句的末尾[/color]
[*].
[*].
[*]强烈不推荐:
[*][color=olive]1、not in[/color]
[*][color=olive]2、<>[/color]
[*][color=olive]3、>[/color] (用 >= 代替)
[*][color=olive]4、like '%ab%'[/color] (不会使用索引,尽量用 like 'Aab%' 代替)
[/list]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值