面试题答案
一键面试误区
认为只要添加索引就一定能提升查询性能。在一些情况下,例如表数据量极小,或者索引列选择性很差(大量重复值)时,索引不仅不能提升性能,反而可能因为索引维护开销降低性能。比如在性别列(只有男、女两种值)上建立索引,查询时优化器可能不会选择使用该索引,因为全表扫描成本可能更低,而索引维护还会消耗额外资源。
规避方法
- 分析数据分布:使用
ANALYZE TABLE
语句来更新表的统计信息,让优化器能更准确评估索引的使用成本。通过查看索引选择性,即不同值的数量与总行数的比例,选择性越高索引效果越好。如果选择性低,需考虑是否真的需要该索引。 - 测试验证:在开发或测试环境中,针对不同查询场景,分别测试有索引和无索引的执行时间、资源消耗等指标。可以使用
EXPLAIN
关键字查看查询执行计划,观察索引是否被正确使用以及查询的成本估算,根据结果决定是否调整索引策略。