Skip to content

Commit

Permalink
Add sql optimization-related docs to toc (pingcap#5561)
Browse files Browse the repository at this point in the history
* Add sql optimization-related docs to toc

* Update explain-overview.md

* fix broken anchor

* refine language

* update TOC

* link to indexmerge

* Update explain-overview.md

* add mpp

* Update explain-overview.md
  • Loading branch information
TomShawn authored Nov 10, 2021
1 parent 9b0d4ab commit 3aab170
Show file tree
Hide file tree
Showing 12 changed files with 179 additions and 348 deletions.
8 changes: 8 additions & 0 deletions TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,15 @@
+ [SQL 性能调优概览](/sql-tuning-overview.md)
+ 理解 TiDB 执行计划
+ [TiDB 执行计划概览](/explain-overview.md)
+ [使用 `EXPLAIN` 解读执行计划](/explain-walkthrough.md)
+ [MPP 模式查询的执行计划](/explain-mpp.md)
+ [索引查询的执行计划](/explain-indexes.md)
+ [Join 查询的执行计划](/explain-joins.md)
+ [子查询的执行计划](/explain-subqueries.md)
+ [聚合查询的执行计划](/explain-aggregation.md)
+ [视图查询的执行计划](/explain-views.md)
+ [分区查询的执行计划](/explain-partitions.md)
+ [开启 IndexMerge 查询的执行计划](/explain-index-merge.md)
+ SQL 优化流程
+ [SQL 优化流程概览](/sql-optimization-concepts.md)
+ 逻辑优化
Expand Down
2 changes: 1 addition & 1 deletion blocklist-control-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ DESC mysql.expr_pushdown_blacklist;

以下示例首先将运算符 `<``>` 加入黑名单,然后将运算符 `>` 从黑名单中移出。

黑名单是否生效可以从 `explain` 结果中进行观察(参见 [`EXPLAIN` 简介](/explain-overview.md#explain-简介))。
黑名单是否生效可以从 `explain` 结果中进行观察(参见 [`EXPLAIN` 简介](/explain-overview.md#explain-概览))。

1. 对于以下 SQL 语句,`where` 条件中的 `a < 2``a > 2` 可以下推到 TiKV 进行计算。

Expand Down
16 changes: 14 additions & 2 deletions explain-aggregation.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
---
title: 用 EXPLAIN 查看带聚合计算的 SQL 执行计划
title: 用 EXPLAIN 查看聚合查询的执行计划
summary: 了解 TiDB 中 EXPLAIN 语句返回的执行计划信息。
---

# 用 EXPLAIN 查看带聚合计算的 SQL 执行计划
# 用 EXPLAIN 查看聚合查询执行计划

SQL 查询中可能会使用聚合计算,可以通过 `EXPLAIN` 语句来查看聚合查询的执行计划。本文提供多个示例,以帮助用户理解聚合查询是如何执行的。

SQL 优化器会选择以下任一算子实现数据聚合:

Expand Down Expand Up @@ -175,3 +177,13 @@ Query OK, 0 rows affected (0.28 sec)
+------------------------------+---------+-----------+----------------------------+----------------------------------------------------------------------------------------------------+
5 rows in set (0.00 sec)
```

## 其他类型查询的执行计划

+ [MPP 模式查询的执行计划](/explain-mpp.md)
+ [索引查询的执行计划](/explain-indexes.md)
+ [Join 查询的执行计划](/explain-joins.md)
+ [子查询的执行计划](/explain-subqueries.md)
+ [视图查询的执行计划](/explain-views.md)
+ [分区查询的执行计划](/explain-partitions.md)
+ [开启 IndexMerge 查询的执行计划](/explain-index-merge.md)
10 changes: 10 additions & 0 deletions explain-index-merge.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,13 @@ explain select * from t use index(idx_a, idx_b) where a > 1 or b > 1;
> - 在查询中使用 SQL 优化器 Hint [`USE_INDEX_MERGE`](/optimizer-hints.md#use_index_merget1_name-idx1_name--idx2_name-)
>
> SQL Hint 的优先级高于系统变量。
## 其他类型查询的执行计划

+ [MPP 模式查询的执行计划](/explain-mpp.md)
+ [索引查询的执行计划](/explain-indexes.md)
+ [Join 查询的执行计划](/explain-joins.md)
+ [子查询的执行计划](/explain-subqueries.md)
+ [聚合查询的执行计划](/explain-aggregation.md)
+ [视图查询的执行计划](/explain-views.md)
+ [分区查询的执行计划](/explain-partitions.md)
16 changes: 14 additions & 2 deletions explain-indexes.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
---
title: 用 EXPLAIN 查看使用索引的 SQL 执行计划
title: 用 EXPLAIN 查看索引查询的执行计划
summary: 了解 TiDB 中 EXPLAIN 语句返回的执行计划信息。
---

# 用 EXPLAIN 查看使用索引的 SQL 执行计划
# 用 EXPLAIN 查看索引查询的执行计划

SQL 查询可能会使用索引,可以通过 `EXPLAIN` 语句来查看索引查询的执行计划。本文提供多个示例,以帮助用户理解索引查询是如何执行的。

TiDB 支持以下使用索引的算子来提升查询速度:

Expand Down Expand Up @@ -347,3 +349,13 @@ EXPLAIN SELECT AVG(intkey), ANY_VALUE(pad1) FROM t1;
+------------------------------+---------+-----------+---------------+-----------------------------------------------------------------------------------------------------------------------+
5 rows in set (0.00 sec)
```

## 其他类型查询的执行计划

+ [MPP 模式查询的执行计划](/explain-mpp.md)
+ [Join 查询的执行计划](/explain-joins.md)
+ [子查询的执行计划](/explain-subqueries.md)
+ [聚合查询的执行计划](/explain-aggregation.md)
+ [视图查询的执行计划](/explain-views.md)
+ [分区查询的执行计划](/explain-partitions.md)
+ [开启 IndexMerge 查询的执行计划](/explain-index-merge.md)
16 changes: 14 additions & 2 deletions explain-joins.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
---
title: 用 EXPLAIN 查看使用 JOIN 的 SQL 执行计划
title: 用 EXPLAIN 查看 JOIN 查询的执行计划
summary: 了解 TiDB 中 EXPLAIN 语句返回的执行计划信息。
---

# 用 EXPLAIN 查看使用 JOIN 的 SQL 执行计划
# 用 EXPLAIN 查看 JOIN 查询的执行计划

SQL 查询中可能会使用 JOIN 进行表连接,可以通过 `EXPLAIN` 语句来查看 JOIN 查询的执行计划。本文提供多个示例,以帮助用户理解表连接查询是如何执行的。

在 TiDB 中,SQL 优化器需要确定数据表的连接顺序,且要判断对于某条特定的 SQL 语句,哪一种 Join 算法最为高效。

Expand Down Expand Up @@ -299,3 +301,13 @@ TiDB 会按照以下顺序执行 Merge Join 算子:
1. 从 Build 端把一个 Join Group 的数据全部读取到内存中。
2. 读取 Probe 端的数据。
3. 将 Probe 端的每行数据与 Build 端的一个完整 Join Group 比较,依次查看是否匹配(除了满足等值条件以外,还有其他非等值条件,这里的“匹配”主要是指查看是否满足非等值条件)。Join Group 指的是所有 Join Key 上值相同的数据。

## 其他类型查询的执行计划

+ [MPP 模式查询的执行计划](/explain-mpp.md)
+ [索引查询的执行计划](/explain-indexes.md)
+ [子查询的执行计划](/explain-subqueries.md)
+ [聚合查询的执行计划](/explain-aggregation.md)
+ [视图查询的执行计划](/explain-views.md)
+ [分区查询的执行计划](/explain-partitions.md)
+ [开启 IndexMerge 查询的执行计划](/explain-index-merge.md)
10 changes: 10 additions & 0 deletions explain-mpp.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,3 +164,13 @@ EXPLAIN ANALYZE SELECT COUNT(*) FROM t1 GROUP BY id;
```

`EXPLAIN` 相比,ExchangeSender 的 `operator info` 中多了 `task id` 的输出,其记录了该查询片段实例化成的 MPP 任务的任务 ID。此外 MPP 算子中都会有 `threads` 这一列,这列记录了 MPP 在执行该算子时使用的并发数(如果集群由多个节点组成,该并发数是所有节点并发数相加的结果)。

## 其他类型查询的执行计划

+ [索引查询的执行计划](/explain-indexes.md)
+ [Join 查询的执行计划](/explain-joins.md)
+ [子查询的执行计划](/explain-subqueries.md)
+ [聚合查询的执行计划](/explain-aggregation.md)
+ [视图查询的执行计划](/explain-views.md)
+ [分区查询的执行计划](/explain-partitions.md)
+ [开启 IndexMerge 查询的执行计划](/explain-index-merge.md)
Loading

0 comments on commit 3aab170

Please sign in to comment.