File tree Expand file tree Collapse file tree 1 file changed +14
-5
lines changed
Expand file tree Collapse file tree 1 file changed +14
-5
lines changed Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments