46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
TABLE LOOKUP
|
|
=================================
|
|
|
|
TABLE LOOKUP 算子用于表示全局索引的回表逻辑。
|
|
|
|
示例:全局索引回表
|
|
|
|
```javascript
|
|
obclient>CREATE TABLE t1(c1 INT PRIMARY KEY, c2 INT, c3 INT) PARTITION BY
|
|
HASH(c1) PARTITIONS 4;
|
|
Query OK, 0 rows affected (0.12 sec)
|
|
|
|
obclient>CREATE INDEX i1 ON t1(c2) GLOBAL;
|
|
Query OK, 0 rows affected (0.12 sec)
|
|
|
|
obclient>EXPLAIN SELECT * FROM t1 WHERE c2 = 1\G;
|
|
*************************** 1. row ***************************
|
|
Query Plan:
|
|
| ========================================
|
|
|ID|OPERATOR |NAME |EST. ROWS|COST |
|
|
----------------------------------------
|
|
|0 |TABLE LOOKUP|t1 |3960 |31065|
|
|
|1 | TABLE SCAN |t1(i1)|3960 |956 |
|
|
========================================
|
|
|
|
Outputs & filters:
|
|
-------------------------------------
|
|
0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil),
|
|
partitions(p[0-3])
|
|
1 - output([t1.c1]), filter(nil),
|
|
access([t1.c1]), partitions(p0)
|
|
```
|
|
|
|
|
|
|
|
上述示例中,1 号算子是扫描全局索引 i1, 0 号算子表明从主表中获取不在全局索引的列。执行计划展示中的 outputs \& filters 详细展示了 TABLE LOOKUP 算子的输出信息如下:
|
|
|
|
|
|
| **信息名称** | **含义** |
|
|
|------------|---------------------------------------------------------------------|
|
|
| output | 该算子的输出列。 |
|
|
| filter | 该算子的过滤谓词。 由于示例中 TABLE LOOKUP 算子没有设置 filter,所以为 nil。 |
|
|
| partitions | 查询需要扫描的分区。 |
|
|
|
|
|