0%的语句性能问题都可以靠索引解决,但索引有哪几个问题?
第一,单列索引要充分评估,比如有20个列,每个列上都有1个单列的情况,会造成对写入的影响很大,同时单列索引的建议一定要评估可选择性。 第二,定期Review索引有效性,索引是不是在业务中真正使用在MySQL里相对不好定位,失效索引在业务快速发展频繁变更的场景下会很常见,随着新业务新添加很多新索引,这时要看新的索引是不是已经覆盖之前的旧索引,此时旧索引实际上是没有用的。维护无效索引要多一份IO成本,删除除重复索引保留有效的即可。 第三,不要走极端,包括两点:复合索引所有列与所有列都建单列索引。 比如一张表有七八个列,只在单列有索引,因为索引有回表不回表的区别,所以直接建立一个包含所有列复合索引,这个方法不可取,虽然提升了查询的效率,但等于又另外维护了一张所有字段都要排序的表。 所有列都建单列索引,实际上跟是复合索引所有列是一样的。主要消耗会出现索引维护上。
答复内容摘自《深入MySQL实战》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/topic/download?id=1167
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。