# `Point_Get` and `Batch_Point_Get` Operators

+ TiDB server uses the TiKV entry `KEY`, also known as the `RowID`, to get the corresponding `VALUE` from TiKV layer
+ **`Point_Get`** is the most efficient operation in TiDB
+ The logical transformation and cost-based optimization are skipped
+ For clustered index table, the `RowID` is in the **primary key** column
+ For non-clustered index and implicit primary key table, the `RowID` is in the **`_tidb_rowid`** column
+ In **`operator info`**, the referenced `RowID` is represented by **`handle`**, for example

```
tidb> EXPLAIN SELECT first_name FROM employees WHERE emp_no=10009;
+-------------+---------+------+-----------------+---------------+
| id          | estRows | task |  access object  | operator info |
+-------------+---------+------+-----------------+---------------+
| Point_Get_1 |  1.00   | root | table:employees | ~!@handle:10009@!~  |
+-------------+---------+------+-----------------+---------------+
1 row in set (0.00 sec)

tidb> EXPLAIN SELECT first_name FROM employees WHERE emp_no IN (10009, 10010);
+-------------------+---------+------+-----------------+----------------------------------------------------+
| id                | estRows | task |  access object  | operator info                                      |
+-------------------+---------+------+-----------------+----------------------------------------------------+
| Batch_Point_Get_1 |  2.00   | root | table:employees | ~!@handle:[10009 10010]@!~, keep order:false, desc:false |
+-------------------+---------+------+-----------------+----------------------------------------------------+
1 row in set (0.00 sec)
```

------------------------------------------------------------------------------
Review the first SQL statement: `EXPLAIN SELECT first_name FROM employees WHERE emp_no=10009`, in this statement, the condition `emp_no=10009` accesses the primary key column `emp_no`. Since the `employees` table is a clustered index table, the logical transformation and cost-based optimization are skipped. 

The executor can directly retrieve the key value from a key-value pair using the primary key and fetch the unique row from the TiKV cluster. This type of operator is the fastest in a query. If your SQL execution plan shows steps like `Point_Get` or `Batch_Point_Get`, it indicates that the SQL statement is already optimized and no further improvements can be made.

In addition, the second statement involves `Batch_Point_Get`, which is actually multiple `Point_Get` operations in batch and comes with the best performance.