针对一些大的运营商的系统,比如电信 银行系统。通常会有些表的数据量会很大百万、千万等,此时查询速度是一个很重要很关键的因素。查询响应慢是用户无法接受的。所以要针对这些大数据量表要建立相应的索引。但是经过长时间应用之后如果大表进行了频繁的增删改查操作后,可能会导致索引失效,严重会应用客户使用及用户体验。所以此时需要对大表进行索引分析甚至重建。现在就索引重建大体讲述一下。
大体步骤如下:
tableA表为例
1)、备份原始实例表数据库脚本(主键,索引,外键,约束等)
2)、对原始表的数据总数量进行核实。
select count(1) from tableA;
3)、对原始表进行备份,生成新表。
create table tableA_bak as select * from tableA;
4)、核实新表数据总量
select count(1) from tableA_bak
5)、删除原始表,如果删除失败,原因是原始表有外键约束。需要将子表(tableC)与原始表的外键备份,备份后删除子表与原始表的外键。外键删除后,删除原始表。如果删除成功,则表明原始表不存在子表外键的关联,无需备份子表外键。
6)、删除原始表之后进行备份表的重命名。
alter table tableA_bak rename to tableA;
7)、重新命名后,对第一步备份的原始表的主键、外键、索引、约束进行执行恢复。并且查看第5步是否有输出(备份的子表外键),有输出则执行,无输出则完成。
8)、检查、确认与之前原始表数据的完整性以及主键、索引、外键、约束的正确性。
完成上面8个步骤则已经实现了对大表的索引重建工作。系统会对需要执行索引重建的朋友有所帮助