千金良方:MySQL性能优化金字塔法则
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

9.6 查看未使用的索引

使用schema_unused_indexes视图可以查看不活跃的索引(没有任何事件发生的索引,表示该索引从未使用过),在默认情况下按照schema名称和表名进行排序。数据来源:performance_schema.table_io_waits_summary_by_index_usage,该视图在服务器启动并运行足够长的时间后,所查询出的数据才比较实用;否则,使用该视图查询出的数据可能并不十分可靠,因为统计的数据可能并不精确,有一部分业务查询逻辑可能还来不及查询。

下面是使用schema_unused_indexes视图查询的结果集。

mysql> select * from schema_unused_indexes limit 3;
+---------------+-------------+-------------------+
| object_schema | object_name | index_name        |
+---------------+-------------+-------------------+
| luoxiaobo     | public_num  | public_name_index |
| sbtest        | sbtest1     | k_1                |
| sbtest        | sbtest2     | k_2                |
+---------------+-------------+-------------------+
3 rows in set(0.00 sec)

下面贴出视图查询语句文本。

SELECT object_schema,
      object_name,
      index_name
  FROM performance_schema.table_io_waits_summary_by_index_usage
WHERE index_name IS NOT NULL
  AND count_star = 0
  AND object_schema ! = 'mysql'
  AND index_name ! = 'PRIMARY'
ORDER BY object_schema, object_name;