---
title: 如何查看当前查询是否使用了索引-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于如何查看当前查询是否使用了索引相关的常见问题和使用技巧，帮助您快速解决如何查看当前查询是否使用了索引的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 如何查看当前查询是否使用了索引

更新时间：2026-05-22 08:56

适用版本： V2.2.x、V3.1.x、V3.2.x 内容类型：How-to  

本文主要介绍如何查看当前查询是否使用了索引。

本例中，建表语句如下：

```unknow
obclient> CREATE TABLE tb(id int AUTO_INCREMENT PRIMARY KEY,name varchar(3), index  idx_name  (name));
Query OK, 0 rows affected (0.06 sec)
obclient>
obclient> INSERT INTO tb(name) VALUES ('a'),('b'),('c'),('d'),('e');
Query OK, 5 rows affected (0.04 sec)
Records: 5  Duplicates: 0  Warnings: 0

obclient> COMMIT;
Query OK, 0 rows affected (0.01 sec)
obclient> SEELCT * FROM tb;
+----+------+
| id | name |
+----+------+
|  1 | a    |
|  2 | b    |
|  3 | c    |
|  4 | d    |
|  5 | e    |
+----+------+
5 rows in set (0.01 sec)

```

- 要查看查询是否使用了普通索引，可以在查询计划中查看 NAME 列。

  如果使用了索引，在查询计划的 NAME 列可以看到表扫描的表名为索引表的名称 `idx_name`。如果没有使用索引，则会对查询的表进行全表扫描。

  ```unknow
  obclient> EXPLAIN EXTENDED SELECT * FROM tb WHERE name='c';
  | Query Plan
  | ===========================================
  |ID|OPERATOR  |NAME        |EST. ROWS|COST|
  -------------------------------------------
  |0 |TABLE SCAN|tb(idx_name)|1        |35  |
  ===========================================
  Outputs & filters:
  -------------------------------------
    0 - output([tb.id(0x7f482c9eac00)], [tb.name(0x7f482c9ea8f8)]), filter(nil),
        access([tb.name(0x7f482c9ea8f8)], [tb.id(0x7f482c9eac00)]), partitions(p0),
        is_index_back=false,
        range_key([tb.name(0x7f482c9ea8f8)], [tb.id(0x7f482c9eac00)]), range(c,MIN ; c,MAX),
        range_cond([tb.name(0x7f482c9ea8f8) = 'c'(0x7f482c9ea2f0)])
  Used Hint:
  -------------------------------------
    /*+
    */
  Outline Data:
  -------------------------------------
    /*+
        BEGIN_OUTLINE_DATA
        INDEX(@"SEL$1" "test.tb"@"SEL$1" "idx_name")
        END_OUTLINE_DATA
    */

  ```
 - 要查看查询是否使用了主键索引，可以在查询计划中查看 `Outputs & filters` 中的 `range_key`。

  如果使用了主键索引，在查询计划的 `Outputs & filters` 中的 `range_key` 中，可以看到使用的是在创建表时指定的主键列，上例中为 id 列。

  ```unknow
  obclient> EXPLAIN EXTENDED SELECT * FROM tb WHERE id BETWEEN 2 AND 3;
  | Query Plan
  | ===================================
  |ID|OPERATOR  |NAME|EST. ROWS|COST|
  -----------------------------------
  |0 |TABLE SCAN|tb  |5        |36  |
  ===================================
  Outputs & filters:
  -------------------------------------
    0 - output([tb.id(0x7f482c9eab60)], [tb.name(0x7f482c9eae68)]), filter(nil),
        access([tb.id(0x7f482c9eab60)], [tb.name(0x7f482c9eae68)]), partitions(p0),
        is_index_back=false,
        range_key([tb.id(0x7f482c9eab60)]), range[2 ; 3],
        range_cond([(T_OP_BTW, tb.id(0x7f482c9eab60), ?, ?)(0x7f482c9e9cf0)])
  Used Hint:
  -------------------------------------
    /*+
    */
  Outline Data:
  -------------------------------------
    /*+
        BEGIN_OUTLINE_DATA
        FULL(@"SEL$1" "test.tb"@"SEL$1")
        END_OUTLINE_DATA
    */

  ```

上一篇

[如何查看索引的定义，以及查看该索引究竟是全局索引还是非全局索引](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207722)

下一篇

[如何查询索引大小](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000198) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
