相信有很多小伙伴在使用MySQL数据库时,遇到过需要批量获取所有表的全局索引信息的问题。那么该怎样操作呢?

其实,可以通过这样一个SQL语句来获取MySQL数据库中所有表的全局索引信息:

SELECT DISTINCT
TABLE_SCHEMA AS '数据库',
TABLE_NAME AS '表名',
INDEX_NAME AS '索引名',
INDEX_TYPE AS '索引类型', GROUP_CONCAT(DISTINCT COLUMN_NAME
ORDER BY SEQ_IN_INDEX) AS '列名'
FROM
information_schema.statistics
WHERE
table_schema NOT IN ('information_schema', 'sys', 'mysql', 'performance_schema')
GROUP BY
table_schema,
table_name,
index_name,
index_type;

该SQL语句使用了information_schema统计表,过滤掉了MySQL自带的系统表,以获取所有用户表的全局索引信息。在查询结果中,每个表的索引信息会显示在一行中,多个索引之间使用“,”分隔,多个列名之间也使用“,”分隔。

需要注意的是,如果数据库中的表比较多,该SQL语句执行的时间可能会比较长。在执行之前,最好进行测试,以确保该语句不会对数据库造成过大的压力。