Skip to content

Commit aa04297

Browse files
committed
组合索引
1 parent de4a13f commit aa04297

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

docs/mysql/basic.md

+11-1
Original file line numberDiff line numberDiff line change
@@ -126,18 +126,28 @@ select * from t1 where col_name1 NOT IN ALL (select col_name2 from t2);
126126

127127
### 六、连接查询
128128
1.内连接(inner join)
129+
等值连接、不等值连接、自连接
129130

130131
// TODO
131132

132133
2.外连接
133134

134-
left join(坐连接,左边的所有行匹配右边的符合条件的行)
135+
left join(坐连接,左边的所有行匹配右边的符合条件的行)
136+
137+
以左表为主,先查询出左表,按照on后的关联条件匹配右表,没有匹配到的用null填充
138+
135139
right join(右连接,右全而坐匹配)
136140

137141
3.交叉连接(across join)
142+
> 没有任何的关联查询,结果就是笛卡尔积,结果集很大,没有任何意义
143+
138144

139145
4.联合查询(union与union all)
140146

147+
把多个结果集集中在一起
148+
141149
5.全连接(full join)
142150

143151

152+
153+

docs/mysql/index.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ CREATE TABLE `table` (
2626
```
2727
4.组合索引(将多个列组合在一起创建索引)
2828

29+
***mysql执行查询中,只会使用到一个索引***
30+
>最左前缀:意思是使用组合索引的时候,从左到右依次匹配,否则不会使用组合索引。
31+
例如`ALTER TABLE people ADD INDEX lname_fname_age (lame,fname,age); `其实我们是建立了三个索引,分别是:单列索引lame,组合索引(lame,fname),组合索引(lame,fname,age),mysql索引的时候只会使用其中一个索引。所以创建组合索引的时候,尽量把使用频繁的放在左边
32+
2933

3034
### 二、索引创建的原则和注意事项
3135
1. 最适合创建索引的是出现在where子句中的列或是出现在连接子句中的列
@@ -38,7 +42,10 @@ CREATE TABLE `table` (
3842
3943
6.如果mysql觉得全表扫描比索引扫描快,他会自动放弃使用索引
4044

41-
7.但是
45+
7.mysql查询只使用一个索引,如果where子句中使用了索引,那么order by中的列是不会使用索引的
46+
47+
8.列中包含null值是不会使用索引的,如果column_name is null还是会使用索引,但是建表的时候尽量设置一个非null的默认值。
48+
4249

4350

4451

0 commit comments

Comments
 (0)