项目迭代长了之后,生产环境和测试环境创建的索引可能存在不一致情况,需要分别导出来进行比对,补全缺失的索引。网上好多文章的脚本执行都有问题,下面这个脚本亲测通过,大家可放心使用。
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 = '数据库名'
GROUP BY
TABLE_NAME,
INDEX_NAME
ORDER BY
TABLE_NAME ASC,
INDEX_NAME ASC
网友评论