面试题答案
一键面试常用方法及适用场景
- ANALYZE TABLE
- 适用场景:适用于大多数场景,尤其是当表结构发生变化(如添加、删除列等),或者数据量有较大变化后,希望MySQL能够重新准确统计索引信息,以优化查询执行计划。对于InnoDB、MyISAM等存储引擎的表都适用。
- OPTIMIZE TABLE
- 适用场景:主要用于MyISAM表,不仅可以更新索引统计信息,还能对表进行碎片整理,优化表的物理存储结构,提升性能。对于InnoDB表,从MySQL 5.6开始,
OPTIMIZE TABLE
在功能上等同于ANALYZE TABLE
,只是在InnoDB存储引擎下,OPTIMIZE TABLE
并不会像在MyISAM表中那样进行碎片整理。
- 适用场景:主要用于MyISAM表,不仅可以更新索引统计信息,还能对表进行碎片整理,优化表的物理存储结构,提升性能。对于InnoDB表,从MySQL 5.6开始,
- CREATE INDEX...FORCE
- 适用场景:在创建索引时,如果想强制MySQL重新计算索引统计信息,可以使用此方法。例如,在某些特殊情况下,需要确保新创建的索引统计信息是准确且最新的。
InnoDB存储引擎表更新索引统计信息操作步骤
- 使用ANALYZE TABLE
执行上述SQL语句,MySQL会对ANALYZE TABLE your_table_name;
your_table_name
表的索引统计信息进行更新。这会让MySQL重新评估索引的选择性等信息,有助于优化器生成更合理的查询执行计划。 - 使用OPTIMIZE TABLE(MySQL 5.6及之后)
在InnoDB存储引擎下,此操作等同于OPTIMIZE TABLE your_table_name;
ANALYZE TABLE
,同样会更新索引统计信息。但如前所述,它不会像在MyISAM表中那样进行碎片整理。