#导出MySQL数据库所有建索引的语句脚本

在5.X版本和8.X版本测试可用。

-- MYSQL导出现有库中的索引脚本
SELECT 
    CONCAT('ALTER TABLE `',
            TABLE_NAME,
            '` ',
            'ADD ',
            IF(NON_UNIQUE = 1,
                CASE UPPER(INDEX_TYPE)
                    WHEN 'FULLTEXT' THEN 'FULLTEXT INDEX'
                    WHEN 'SPATIAL' THEN 'SPATIAL INDEX'
                    ELSE CONCAT('INDEX `',
                            INDEX_NAME,
                            '` USING ',
                            INDEX_TYPE)
                END,
                IF(UPPER(INDEX_NAME) = 'PRIMARY',
                    CONCAT('PRIMARY KEY USING ', INDEX_TYPE),
                    CONCAT('UNIQUE INDEX `',
                            INDEX_NAME,
                            '` USING ',
                            INDEX_TYPE))),
            '(',
            GROUP_CONCAT(DISTINCT CONCAT('`', COLUMN_NAME, '`')
                ORDER BY SEQ_IN_INDEX ASC
                SEPARATOR ', '),
            ');') AS 'Show_Add_Indexes'
FROM
    information_schema.STATISTICS
WHERE
    TABLE_SCHEMA = 'mydatabase'
GROUP BY INDEX_TYPE , NON_UNIQUE , TABLE_NAME , INDEX_NAME
ORDER BY TABLE_NAME ASC , INDEX_NAME ASC;
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐