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

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

划线反馈

# 查询索引实体表

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

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

在 OceanBase 数据库中，索引表与普通数据表一样都是实体表，OceanBase 数据库在更新数据表时会先更新索引表（索引实体表），然后再更新数据表。用户租户下可使用多种方式查看已创建用户表的索引。

然而在部分运维场景或者问题诊断场景中，需要深入查询索引对应实体表的各类详细信息（如索引表的 table_id 等），本文简要介绍如何通过 __all_virtual_table 查询索引实体表相关信息。

## 操作方法

1. MySQL 租户下创建包含索引的用户表。

   ```shell
   obclient > CREATE TABLE index_table ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, age int(11) NOT NULL, email varchar(50) DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY email (email), KEY name_age (name, age));
   Query OK, 0 rows affected (0.049 sec)

   ```
 2. sys 租户下查看该表信息。

   ```shell
   obclient > select tenant_id, table_name,table_id,database_id,table_type from __all_virtual_table where tenant_id=1029 and table_name='index_table';

   ```

   输出结果如下:

   ```shell
    +-----------+-------------+------------------+------------------+------------+
    | tenant_id | table_name  | table_id         | database_id| table_type       |
    +-----------+-------------+------------------+------------------+------------+
    | 1029      | index_table | 1131397465031516 | 1131397464982555 | 3          |
    +-----------+-------------+------------------+------------------+------------+

   ```
 3. sys 租户下查询该表的索引表信息(不包含 primary key )。

   ```shell
   obclient> select table_id,database_id,table_name,table_type, case index_type WHEN 0 THEN 'not index table' WHEN 1 THEN 'local index' WHEN 2 THEN 'unique local index' WHEN 3 THEN 'global index' WHEN 4 THEN 'unique global index' WHEN 7 THEN 'NORMAL_GLOBAL_LOCAL_STORAGE' WHEN 8 THEN 'UNIQUE_GLOBAL_LOCAL_STORAGE' end as index_type, case index_status WHEN 1 THEN 'unavailable' WHEN 2 THEN 'available' end as index_status, index_column_num,data_table_id from __all_virtual_table where data_table_id=1131397465031516;

   ```

   输出结果如下:

   ```shell
    +------------------+------------------+---------------------------------+------------+--------------------+--------------+------------------+------------------+
    | table_id         | database_id      | table_name                      | table_type | index_type         | index_status | index_column_num | data_table_id    |
    +------------------+------------------+---------------------------------+------------+--------------------+--------------+------------------+------------------+
    | 1131397465031517 | 1131397464982555 |__idx_1131397465031516_email     | 5          | unique local index | available    | 1                | 1131397465031516 |
    | 1131397465031518 | 1131397464982555 | __idx_1131397465031516_name_age | 5          | local index        | available    | 2                | 1131397465031516 |
    +------------------+------------------+---------------------------------+------------+--------------------+--------------+------------------+------------------+

   ```

在内部表 `__all_virual_table` 中，当查询结果中的 table_name 以 "_*idx*" 开头时（通常为 __idx + 主表table_id + 索引名），通常表示该查表为某个用户表对应的索引表，此时 table_type 字段的值应该为5（系统表：0，系统视图：1，虚拟表：2，用户表：3，用户视图：4，索引表：5，临时表：6，物化视图：7，会话级别 oracle 兼容模式下的临时表：8，事务级别 oracle 兼容模式下的临时表：9），data_table_id 字段为该索引表对应的用户数据表的 table_id，因此可以利用该字段查询索引表的信息。data_table_id 的值就是主表 ID 的值。

## 适用版本

OceanBase 数据库 V2.x 和 V3.x 版本。

上一篇

[如何查询索引大小](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000198)

下一篇

[OceanBase 数据库 V3.x 大表创建索引的最佳实践](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000366651) ![有帮助](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) 咨询热线
