昆仑弟子_面霸
06-23·后端开发·10年+
面试吊打面试官
面试官:MySQL索引是不是越多越好?我:不是,适量才是最优的面试官:那你说说,为什么不能多建?索引不是能加快查询吗?我:查询确实快,但索引有代价。主要影响写入、更新、删除操作面试官:具体什么代价?详细说说我:每次增删改数据,不仅要改表数据,还要同步修改所有相关索引。索引越多,维护成本越高,写入就越慢面试官:除了读写变慢,还有别的问题吗?我:有。索引会占用磁盘空间,冗余索引会浪费存储。而且索引多,MySQL筛选执行计划的时间也会变长,偶尔还会选错索引面试官:那我问你,一张表一般建多少索引合适?我:没有固定数值,但常规业务表,单表索引控制在五六个以内最好。写入频繁的表,索引要更少面试官:那哪些索引属于多余的、可以直接删掉的?我:首先是冗余前缀索引。比如已经有(a,b)联合索引,单独的a索引基本没用,可以删掉面试官:还有吗?我:长期不被SQL使用的索引。还有重复索引,多个索引功能完全重叠,只留最优的一个就行面试官:那我反过来问,索引太少会有什么问题?我:查询会全表扫描。数据量小没影响,数据量大的时候,SQL执行极慢,直接拖垮接口性能面试官:你平时建索引,优先考虑什么场景?我:优先高频查询、过滤条件、排序、分组的字段。写入频繁、极少查询的字段,坚决不建索引
发布于 广东
4
2
8
未登录
友善发言
评论
加载中
下载脉脉APP,成就职业梦想
违法不良信息&未成年人有害信息举报电话/客服电话:400 065 0808
违法不良信息&未成年人有害信息举报邮箱/客服邮箱:maimai@taou.com
清朗系列专项行动相关违规信息举报电话:400 065 0808,举报邮箱:maimai@taou.com
个人/企业等被诽谤侮辱、人身权或知识产权等被侵犯、网络谣言的举报地址:maimai.cn/tousu | 涉企虚假不实信息举报投诉专区
京ICP备12005786号-1copyright©maimai.cn