# Index Full Scan (Continue...)
```7
/* Index Used */
mysql> explain select min(id) from t1;
+------------------------------+---------+-----------+-------------------------------+---------------------------------+
| id                           | estRows | task      | access object                 | operator info                   |
+------------------------------+---------+-----------+-------------------------------+---------------------------------+
| StreamAgg_10                 | 1.00    | root      |                               | funcs:min(test.t1.id)->Column#6 |
| └─Limit_15                   | 1.00    | root      |                               | offset:0, count:1               |
|   └─IndexReader_25           | 1.00    | root      |                               | index:Limit_24                  |
|     └─Limit_24               | 1.00    | cop[tikv] |                               | offset:0, count:1               |
|       └─IndexFullScan_23     | 1.00    | cop[tikv] | table:t1, index:t1_ind_id(id) | keep order:true                 |
+------------------------------+---------+-----------+-------------------------------+---------------------------------+
5 rows in set (0.16 sec)

/* Index NOT Used */
mysql> explain select min(c1) from t1;
+--------------------------------+------------+-----------+---------------+---------------------------------+
| id                             | estRows    | task      | access object | operator info                   |
+--------------------------------+------------+-----------+---------------+---------------------------------+
| StreamAgg_10                   | 1.00       | root      |               | funcs:min(test.t1.c1)->Column#6 |
| └─TopN_11                      | 1.00       | root      |               | test.t1.c1, offset:0, count:1   |
|   └─TableReader_21             | 1.00       | root      |               | data:TopN_20                    |
|     └─TopN_20                  | 1.00       | cop[tikv] |               | test.t1.c1, offset:0, count:1   |
|       └─Selection_19           | 2557440.00 | cop[tikv] |               | not(isnull(test.t1.c1))         |
|         └─TableFullScan_18     | 2560000.00 | cop[tikv] | table:t1      | keep order:false                |
+--------------------------------+------------+-----------+---------------+---------------------------------+
6 rows in set (0.01 sec)
```

------------------------------------------------------------

In this example, TiDB performs an IndexFullScan operation on each TiKV Region. In the min (id) example, although the operator is named FullScan or Full Scan, TiDB only reads the first line, and we can see a limit_24 operator. Each TiKV return its own min value to TiDB, which filters out a row of data during the stream aggregation.

In the following example, when there is no index, the min function performs a full scan of the table on TiKV. The query scans all rows on TiKV. However, because of the TopN operator, it is guaranteed that each TiKV return only one row of data to TiDB. Although TopN reduces redundant data transfer between TiDB and TiKV, the query is still far less efficient than the above example (MIN can use indexes).
