Skip to content

Commit 361a775

Browse files
committed
Update Java Notes
1 parent 784aab5 commit 361a775

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

DB.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,7 +1287,7 @@ LIMIT <limit_params>
12871287
| AND 或 && | 并且 |
12881288
| OR 或 \|\| | 或者 |
12891289
| NOT 或 ! | 非,不是 |
1290-
| UNION | 对两个结果集进行并集操作并进行去重,同时进行默认规则的排序 |
1290+
| UNION | 对两个结果集进行**并集操作并进行去重,同时进行默认规则的排序** |
12911291
| UNION ALL | 对两个结果集进行并集操作不进行去重,不进行排序 |
12921292

12931293
* 例如:
@@ -2211,12 +2211,21 @@ Join Buffer 可以通过参数 `join_buffer_size` 进行配置,默认大小是
22112211

22122212
#### 查询优化
22132213

2214-
不相关子查询的结果集会被写入一个临时表,并且在写入时去重,该过程称为物化,存储结果集的临时表称为物化表
2215-
2216-
系统变量 tmp_table_size 或者 max_heap_table_size 为表的最值
2214+
不相关子查询的结果集会被写入一个临时表,并且在写入时**去重**,该过程称为**物化**,存储结果集的临时表称为物化表。系统变量 tmp_table_size 或者 max_heap_table_size 为表的最值
22172215

22182216
* 小于系统变量时,内存中可以保存,会为建立基于内存的 MEMORY 存储引擎的临时表,并建立哈希索引
2219-
* 大于任意一个系统变量时,物化表会使用基于磁盘的存储引擎来保存结果集中的记录,索引类型为 B+ 树,
2217+
* 大于任意一个系统变量时,物化表会使用基于磁盘的存储引擎来保存结果集中的记录,索引类型为 B+ 树
2218+
2219+
物化后,嵌套查询就相当于外层查询的表和物化表进行内连接查询,然后经过优化器选择成本最小的表连接顺序执行查询
2220+
2221+
将子查询物化会产生建立临时表的成本,但是将子查询转化为连接查询可以充分发挥优化器的作用,所以引入:半连接
2222+
2223+
* t1 和 t2 表进行半连接,对于 t1 表中的某条记录,只需要关心在 s2 表中是否存在,而不需要关心有多少条记录与之匹配,最终结果集只保留 t1 的记录
2224+
* 半连接只是执行子查询的一种方式,MySQL 并没有提供面向用户的半连接语法
2225+
2226+
2227+
2228+
详细内容可以参考:《MySQL 是怎样运行的》
22202229

22212230

22222231

0 commit comments

Comments
 (0)