面试题答案
一键面试创建索引提升查询性能
可以在customer_id
和order_date
字段上创建联合索引,SQL语句如下:
CREATE INDEX idx_customer_date ON orders (customer_id, order_date);
通过这种方式,MySQL在执行根据customer_id
和order_date
查询amount
的语句时,可以利用该联合索引快速定位到相应的数据行,从而提升查询性能。
索引创建不合理带来的问题
- 插入、更新和删除性能下降:索引需要额外的存储空间来维护数据结构,每次执行插入、更新或删除操作时,数据库不仅要修改数据本身,还要同时更新相关的索引。如果索引不合理,例如创建了过多不必要的索引,会导致这些操作变得更加耗时。
- 索引维护成本增加:不合理的索引可能会导致索引碎片增加,数据库需要花费更多的资源来进行索引的维护,如重建索引、优化索引结构等操作,这会影响数据库整体的性能和资源利用率。
- 查询性能不升反降:如果索引字段选择不当,例如选择了选择性低(重复值多)的字段创建索引,MySQL在查询时可能不会选择使用该索引,甚至可能导致查询优化器生成不合理的执行计划,最终使得查询性能不升反降。