Skip to content

Commit 441ceb2

Browse files
committed
join优化
1 parent fe93f48 commit 441ceb2

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

mysql开发技巧一/join优化

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ join从句:: inner | full outer | left outer | right outer | cross
99

1010

1111
********************************************************************************
12+
左外连接
13+
1214
left join 以左表为基础 查询
1315
忽然想起来有次面试问我如何用left join实现not in的功能 = =
1416

@@ -17,4 +19,33 @@ select A.内容,B.内容 from A left join B ON a.key=b.key where b.key is null
1719
not in 关键字不会使用索引 所以用left join加上关键字为null查找只存在于A表不存在于B表的数据
1820

1921

22+
EFT OUTER JOIN:包含左表中的所有数据,当某个连接谓词不在右表中时,新生成的表的右表字段为NULL。
23+
对左表数据的信息进行扩展,增加右表中的字段,当某个连接谓词不在右表中时,新生成的表的右表字段为NULL。
24+
25+
使用LEFT OUTER JOIN对NOT IN 进行优化。
26+
SELECT select_sxpressions FROM TABLE A LEFT JOIN TABLE B ON A.key=B.key WHERE B.key IS NULL;
27+
表A中不包含表B中的数据。
28+
SELECT select_sxpressions FROM TABLE A LEFT JOIN TABLE B ON A.key=B.key WHERE B.key IS NOT NULL;
29+
表A与表B的交集,相当于INNER JOIN。
30+
31+
********************************************************************************
32+
右外连接
33+
34+
RIGHT OUTER JOIN:包含右表中的所有数据,当某个连接谓词不在左表中时,新生成的表的左表字段为NULL。
35+
对右表数据的信息进行扩展,增加左表中的字段,当某个连接谓词不在左表中时,新生成的表的左表字段为NULL。
36+
37+
使用RIGHT OUTER JOIN对NOT IN 进行优化。
38+
SELECT select_sxpressions FROM TABLE A RIGHT JOIN TABLE B ON A.key=B.key WHERE A.key IS NULL;
39+
表B中不包含表A中的数据。
40+
SELECT select_sxpressions FROM TABLE A RIGHT JOIN TABLE B ON A.key=B.key WHERE A.key IS NOT NULL;
41+
表A与表B的交集,相当于INNER JOIN。
42+
43+
44+
45+
46+
47+
48+
49+
50+
2051

0 commit comments

Comments
 (0)