生成 MySQL 删除索引、创建索引、分析表的 SQL 语句

目录

[1. 生成删除索引 SQL 语句](#1. 生成删除索引 SQL 语句)

[2. 生成创建索引的 SQL 语句](#2. 生成创建索引的 SQL 语句)

[3. 生成分析表的 SQL 语句](#3. 生成分析表的 SQL 语句)


1. 生成删除索引 SQL 语句

复制代码
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -e "
select concat('alter table \`',table_schema,'\`.\`',table_name,'\` ',drop_index,';')
  from (
select table_schema, table_name, group_concat(if(index_name='PRIMARY','drop primary key',concat('drop index \`',index_name,'\`'))) drop_index
  from (
select distinct table_schema, table_name, index_name
  from information_schema.statistics
 where table_schema in ('test')
   and (table_schema, table_name, index_name) not in (
select t1.table_schema, t1.table_name, t1.index_name
  from information_schema.statistics t1, information_schema.columns t2
 where t1.table_schema in ('test')
   and t1.table_schema = t2.table_schema and t1.table_name = t2.table_name and t1.column_name = t2.column_name
   and t2.extra='auto_increment')) t
 group by table_schema, table_name) t;" -N > drop_index.sql

2. 生成创建索引的 SQL 语句

复制代码
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -e "
select concat('alter table \`',table_schema,'\`.\`',table_name,'\` ',create_index,';')
  from (
select table_schema, table_name, group_concat(if(index_name='PRIMARY',concat('add primary key (',index_columns,')'),concat('add index \`',index_name,'\` (',index_columns,')'))) create_index
  from (
select table_schema, table_name, index_name, group_concat(concat('\`',column_name,'\`') order by seq_in_index) index_columns
  from information_schema.statistics
 where table_schema in ('test')
   and (table_schema, table_name, index_name) not in (
select t1.table_schema, t1.table_name, t1.index_name
  from information_schema.statistics t1, information_schema.columns t2
 where t1.table_schema in ('test')
   and t1.table_schema = t2.table_schema and t1.table_name = t2.table_name and t1.column_name = t2.column_name
   and t2.extra='auto_increment')
 group by table_schema, table_name, index_name) t
 group by table_schema, table_name) t;" -N > create_index.sql

3. 生成分析表的 SQL 语句

复制代码
mysql -uwxy -p12345 -S /data/18253/mysqldata/mysql.sock -e "
select concat('analyze table \`',table_schema,'\`.\`',table_name,'\`;') 
  from information_schema.tables 
 where table_schema in ('test');" -N > analyze_table.sql
相关推荐
·云扬·11 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
筵陌12 小时前
MySQL索引及其底层原理(上)
mysql
怣5013 小时前
MySQL子查询零基础入门教程:从小白到上手(零基础入门版)
数据库·mysql
猫头虎14 小时前
基于信创openEuler系统安装部署OpenTeleDB开源数据库的实战教程
数据库·redis·sql·mysql·开源·nosql·database
Nandeska14 小时前
17、MySQL InnoDB ReplicaSet
数据库·mysql
hlABgYML14 小时前
基于NGSIM数据的Wiedemann99跟驰模型标定
mysql
墨理学AI15 小时前
一文学会一点python数据分析-小白原地进阶(mysql 安装 - mysql - python 数据分析 - 学习阶段梳理)
python·mysql·数据分析
洛豳枭薰15 小时前
MySQL 并行复制
数据库·mysql
纤纡.15 小时前
Linux 下 MySQL 数据类型与约束:第三章核心表格归纳与实战应用
linux·mysql
czlczl2002092515 小时前
增删改查时如何提高Mysql与Redis的一致性
数据库·redis·mysql