当前位置:主页 > 查看内容

记一次生产MySQL数据库批量迁移表索引

发布时间:2021-06-08 00:00| 位朋友查看

简介:由于业务需要,需迁移测试环境上的索引到正式库上。下面简单记录下迁移过程中的脚本。 1. 导出所有索引 包括PRIMARY KEY和INDEX SELECT CONCAT( 'ALTERTABLE`', TABLE_NAME, '`', 'ADD', IF ( NON_UNIQUE = 1 , CASE UPPER(INDEX_TYPE) WHEN'FULLTEXT'THEN '……

由于业务需要,需迁移测试环境上的索引到正式库上。下面简单记录下迁移过程中的脚本。

1. 导出所有索引

包括PRIMARY KEY和INDEX

  1. SELECT 
  2.     CONCAT( 
  3.         'ALTER TABLE `', 
  4.         TABLE_NAME, 
  5.         '` ', 
  6.         'ADD ', 
  7.     IF 
  8.         ( 
  9.             NON_UNIQUE = 1
  10.         CASE 
  11.                 UPPER( INDEX_TYPE )  
  12.                 WHEN 'FULLTEXT' THEN 
  13.                 'FULLTEXT INDEX'  
  14.                 WHEN 'SPATIAL' THEN 
  15.                 'SPATIAL INDEX' ELSE CONCAT( 'INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE )  
  16.             END, 
  17.         IF 
  18.             ( UPPER( INDEX_NAME ) = 'PRIMARY', CONCAT( 'PRIMARY KEY USING ', INDEX_TYPE ), CONCAT( 'UNIQUE INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE ) )  
  19.         ), 
  20.         '(', 
  21.         GROUP_CONCAT( DISTINCT CONCAT ( '`', COLUMN_NAME, '`' ) ORDER BY SEQ_IN_INDEX ASC SEPARATOR ', ' ), 
  22.         ');'  
  23. ) AS 'Show_Add_Indexes'  
  24. FROM 
  25.     information_schema.STATISTICS  
  26. WHERE 
  27.     TABLE_SCHEMA = 'FSL_ATT_UAT'  
  28. GROUP BY 
  29.     TABLE_NAME, 
  30.     INDEX_NAME  
  31. ORDER BY 
  32.     TABLE_NAME ASC, 
  33.     INDEX_NAME ASC 

记一次生产mysql数据库批量迁移表索引

2. 不包括PRIMARY KEY,只包含INDEX

  1. SELECT 
  2.     CONCAT( 
  3.         'ALTER TABLE `', 
  4.         TABLE_NAME, 
  5.         '` ', 
  6.         'ADD ', 
  7.     IF 
  8.         ( 
  9.             NON_UNIQUE = 1
  10.         CASE 
  11.                 UPPER ( INDEX_TYPE )  
  12.                 WHEN 'FULLTEXT' THEN 
  13.                 'FULLTEXT INDEX'  
  14.                 WHEN 'SPATIAL' THEN 
  15.                 'SPATIAL INDEX' ELSE CONCAT ( 'INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE )  
  16.             END, 
  17.         IF 
  18.             ( UPPER( INDEX_NAME ) = 'PRIMARY', CONCAT( 'PRIMARY KEY USING ', INDEX_TYPE ), CONCAT( 'UNIQUE INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE ) )  
  19.         ), 
  20.         '(', 
  21.         GROUP_CONCAT( DISTINCT CONCAT ( '`', COLUMN_NAME, '`' ) ORDER BY SEQ_IN_INDEX ASC SEPARATOR ', ' ), 
  22.         ');'  
  23. ) AS 'Show_Add_Indexes'  
  24. FROM 
  25.     information_schema.STATISTICS  
  26. WHERE 
  27.     TABLE_SCHEMA = 'fsl_att_uat'  
  28.     AND UPPER( INDEX_NAME ) != 'PRIMARY'  
  29. GROUP BY 
  30.     TABLE_NAME, 
  31.     INDEX_NAME  
  32. ORDER BY 
  33.     TABLE_NAME ASC, 
  34.     INDEX_NAME ASC 

记一次生产mysql数据库批量迁移表索引

到正式库执行结果语句即可。


本文转载自网络,原文链接:https://www.toutiao.com/i6759159854981448206/
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐