分庫分表的場景下,變更目前還不知道有哪個表變更索引失敗,是不是所有的表都變更成功了,所以可以從INFORMATION_SCHEMA通過羅列索引個數,或者查看索引行,就可以知道是不是所有的都變更成功了:
SELECT table_name AS `Table`, index_name AS `Index`, GROUP_CONCAT(column_name ORDER BY seq_in_index) AS `Columns` FROM information_schema.statistics WHERE table_schema = 'sakila' GROUP BY 1,2;
也可以執行:
SELECT t.name AS `Table`, i.name AS `Index`, GROUP_CONCAT(f.name ORDER BY f.pos) AS `Columns` FROM information_schema.innodb_sys_tables t JOIN information_schema.innodb_sys_indexes i USING (table_id) JOIN information_schema.innodb_sys_fields f USING (index_id) WHERE t.schema = 'sakila' GROUP BY 1,2;
參考資料:
http://blog.9minutesnooze.com/mysql-information-schema-indexes/