Simpelt script:
-- liste alle ikke-unikke indekserVÆLG tabelnavn SOM `Tabel`, indeksnavn SOM `Index`, GROUP_CONCAT(kolonne_navn ORDER BY seq_in_index) AS `Columns`FROM information_schema.statisticsWHERE NON_UNIQUE =1 OG tabel_skema ='min database' OG table_name ='mytable'GROUP BY 1,2;-- slip alle ikke-unikke indekserSET SESSION group_concat_max_len=10240;SELECT CONCAT('ÆNDRING TABLE ', 'Tabel', ' DROP INDEX ', GROUP_CONCAT(`Index` SEPARATOR ', DROP INDEX '),';' )FROM (VÆLG tabelnavn SOM `Tabel`, indeksnavn SOM `Index`FRA informationsskema.statisticsWHERE NON_UNIQUE =1 OG tabelskema ='mindatabase' OG tabelnavn ='mintabel'GRUPPER EFTER `Tabel`, `Indeks `) SOM tmpGROUP BY `Table`;-- tilføj alle ikke-unikke indekser, UDEN indekslængde specSET SESSION group_concat_max_len=10240;SELECT CONCAT('ALTER TABLE', `Table`, 'ADD INDEX', GROUP_CONCAT(CONCAT(`Index `, '(', `Kolonner`, ')') SEPARATOR ',\n TILFØJ INDEKS ') )FRA (VÆLG tabelnavn SOM `Tabel`, indeksnavn SOM `Indeks`, GROU P_CONCAT(column_name ORDER BY seq_in_index) AS `Columns`FROM information_schema.statisticsWHERE NON_UNIQUE =1 AND table_schema ='mydatabase' AND table_name ='mytable'GROUP BY `Table`, `Index`) AS tmpGROUP`;`Table`>