schema_unused_indexes

schema_unused_indexes 用于记录自 TiDB 上次启动以来未被使用的索引信息,包括如下列:

  • OBJECT_SCHEMA:索引所在表的所属数据库的名称。
  • OBJECT_NAME:索引所在表的名称。
  • INDEX_NAME:索引的名称。
  1. USE SYS;
  2. DESC SCHEMA_UNUSED_INDEXES;

输出结果如下:

  1. +---------------+-------------+------+------+---------+-------+
  2. | Field | Type | Null | Key | Default | Extra |
  3. +---------------+-------------+------+------+---------+-------+
  4. | object_schema | varchar(64) | YES | | NULL | |
  5. | object_name | varchar(64) | YES | | NULL | |
  6. | index_name | varchar(64) | YES | | NULL | |
  7. +---------------+-------------+------+------+---------+-------+
  8. 3 rows in set (0.00 sec)

手动创建 schema_unused_indexes 视图

对于从 v8.0.0 之前版本升级的集群,sys Schema 和其中的视图不会自动创建。你可以通过以下 SQL 语句手动创建:

  1. CREATE DATABASE IF NOT EXISTS sys;
  2. CREATE OR REPLACE VIEW sys.schema_unused_indexes AS
  3. SELECT
  4. table_schema as object_schema,
  5. table_name as object_name,
  6. index_name
  7. FROM information_schema.cluster_tidb_index_usage
  8. WHERE
  9. table_schema not in ('sys', 'mysql', 'INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA') and
  10. index_name != 'PRIMARY'
  11. GROUP BY table_schema, table_name, index_name
  12. HAVING
  13. sum(last_access_time) is null;

更多阅读